在vue的mounted阶段,初始化了一个值为Proxy,这个Proxy的get方法不知道被什么东西触发了两次。求助

在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被触发了三次

clipboard.png
可以看到,Symbol(Symbol.toStringTag)、_isVue都被添加到了对象里。
不知道为什么,求助。

阅读 2.5k
2 个回答

vueget的时候才会触发依赖收集,收集完了才会watch,而你的appearTimes肯定是在html模板中,模板中的绑定是会触发get否则无法渲染值也无法监听值变化。

对 appearTimes 重新赋值导致触发了 vue 的属性劫持吧。你打断点看下前一个函数是什么就行了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏