vue2使用watch监听对象变化不起作用

我爱吃干果 2024-09-30 15:03:02 阅读 51

今天使用vue2的watch属性时真的气死我了,将父组件的对象传递给子组件,子组件用watch来接受,但是结果就是不如意,父组件的对象怎么改变,子组件的watch方法就是没反应。

最后百度了下才知道vue2中的props的设计模式为单向数据流,就是说只能从父组件流向子组件,子组件是无法流回父组件,也就是无法从子组件修改父组件传来的值。至于为什么vue2无法直接监听对象呢,一开始以为是Object.defineProperty的问题,但是后来做了实验发现和它也没啥关系,主要是vue2.x为了提高数据绑定的性能主动放弃这样监听模式

因此我们在监听时应该通过computed函数来中转下,在computed函数中定义专门返回自己监听的对象,然后在watch中监听自己所定义的方法。代码如下:

<code> props: {

unReadObj: {

type: Object,

default: null

}

},

computed:{

// 定义方法,返回自己监听的值

getUnReadObj(){

return this.unReadObj

}

},

watch: {

getUnReadObj:{

handle(new_o1,old_o2){

console.log(new_o1,old_o2)

},

// 深度监听,在vue3中使用immediate来开启深度监听

deep:true,

}

},

其他传值的逻辑正常写就行

以上属于个人的小笔记,也是小见解,如果有错误一定立刻改正。。。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。