一、监听对象object
对象object是引用对象,只有改变对象的引用,watch才能正确监听到它的变化,如果只是改变对象的某一属性,则watch监听不到。
1、如下图,修改对象value的引用地址,则watch可以正常监听到。
![](https://img.haomeiwen.com/i11715204/35233a6b5e373c29.png)
2、如果只改变对象的属性,则是监听不到的。
![](https://img.haomeiwen.com/i11715204/4db0a4137f215ddb.png)
3、如何监听到对象属性值的变化???
一般有两种方法:1⃣️使用属性deep深度监听 2⃣️单独监听对象的某一属性(监听字符串)
1⃣️使用属性deep深度监听: 使用该方法是监听对象的所有属性,只要有一个属性值变化,就会监听到。一般会很消耗内存。(缺点:在handler函数中只能获取到变化后的对象,变化前的对象获取不到。后续请查阅资料。)
![](https://img.haomeiwen.com/i11715204/9e33331a089d0b75.png)
2⃣️单独监听对象的某一属性(监听字符串):可以单独监听对象的某一属性,其余属性变化不监听。
![](https://img.haomeiwen.com/i11715204/e1c42070765bf494.png)
二、监听数组
在变异 (不是替换) 对象或数组时,旧值将与新值相同,因为它们的引用指向同一个对象/数组。Vue 不会保留变异之前值的副本。
![](https://img.haomeiwen.com/i11715204/25ce3eac98851075.png)
网友评论