ChartJS 无法引用$refs中的图表

ne5o7dgx  于 2023-04-11  发布在  Chart.js
关注(0)|答案(1)|浏览(187)

我有一个工作的vue-chartjs。当试图优化它时,我遇到了关于$refs的情况。
为了具体化,我获取了一些外部数据并更新了图表ref="myChart"
电话:

this.$refs.myChart.chart.update();

工作正常。
但是,如果:

this.chart = this.$refs.myChart.chart;
this.chart.update();

我得到一个 Stack Overflow(tm) 错误:

runtime-core.esm-bundler.js:218 Uncaught RangeError: Maximum call stack size exceeded
    at addScopesFromKey (helpers.segment.mjs:1883:10)
    at createSubResolver (helpers.segment.mjs:1875:11)
    at _resolveWithPrefixes (helpers.segment.mjs:1906:11)
    at helpers.segment.mjs:1717:15
    at _cached (helpers.segment.mjs:1798:17)
    at Object.get (helpers.segment.mjs:1716:14)
    at _resolveWithContext (helpers.segment.mjs:1804:15)
    at helpers.segment.mjs:1758:15
    at _cached (helpers.segment.mjs:1798:17)
    at Object.get (helpers.segment.mjs:1757:14)

我高度怀疑的是,这可能是一些vue.js代理/voodoo,在复制对象引用时会中断。也可能不是,也许只有一些chart.js的方式来处理这个问题。
所以,我问的不是如何修复我的代码(这很好),而是要理解这里发生了什么。
例如,ES6如何知道从this.chart调用而不是从this.$refs.myChart.chart调用是不一样的,因为它应该处理相同的引用。

n8ghc7c1

n8ghc7c11#

我不知道Proxy。我以前接触javascript是在ES6发布之前。
所以Proxy::get()可以解释发生了什么。

相关问题