我有一个工作的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
调用是不一样的,因为它应该处理相同的引用。
1条答案
按热度按时间n8ghc7c11#
我不知道
Proxy
。我以前接触javascript是在ES6发布之前。所以
Proxy::get()
可以解释发生了什么。