在vue的mounted阶段,给data中的一个变量设为Proxy,不知道什么原因Proxy的get函数被触发了
let vm = new Vue({
el: '#app',
data: {
appearTimes: null
},
mounted: function () {
this.appearTimes = new Proxy({}, {
get (target, prop) {
console.log(target, prop);
if (prop not in target) {
target[prop] = null;
}
},
set ...略
});
}
});
大概就是这样子,我在mounted阶段初始化了一些数据,我发现在页面初始化的时候,这里的get方法被执行了,而且控制台输出了一些东西,说明get被触发了三次
可以看到,Symbol(Symbol.toStringTag)、_isVue都被添加到了对象里。
不知道为什么,求助。
vue
在get
的时候才会触发依赖收集,收集完了才会watch
,而你的appearTimes
肯定是在html
模板中,模板中的绑定是会触发get
否则无法渲染值也无法监听值变化。