Vue.createApp({
data() {
return {
counter: 0
}
},
template: '<div>{{counter++}}</div>'
}).mount('#root')
最后,此代码在页面上显示101。有人知道这个细节吗?
原因你counter
变量被渲染为101,而不是1就是因为你有你的模板副作用。当模板渲染时counter
,Vue会增加,Vue注册更改并再次触发渲染...这只是一个无限循环
这个无限循环不是那么无限,而是在101次迭代后停止的原因在于Vue在内部检查这种情况并抛出错误(您应该在浏览器开发工具控制台中看到)。引发错误的条件是number_of_iterations > RECURSION_LIMIT
在哪里RECURSION_LIMIT
设置为100
错误:
超过了最大的递归更新。这意味着您会产生反应性效果,该效果会改变其自身的依赖性,从而递归地触发自身。可能的来源包括组件模板,渲染功能,更新的挂钩或观察者来源功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句