Vue watch监测不到数据变化与新老值一样

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue watch监测不到数据变化与新老值一样相关的知识,希望对你有一定的参考价值。

参考技术A

当watch的值是一个 引用类型 的,如 Array Object 这种,是监测不到变化的。

方法:

vue中的watch方法

vue中的监听方法

watch

注意

名字 你想监听哪个属性,就要和他起一样的名字

1.作用

用来监听vue实例中的数据变化
可以随时修改状态的变化

2.触发条件

当你监听的属性发生变化时,会自动调用对应的监听方法

3.使用场景

用于异步处理,开销比较大的运算

4.示例

	 watch:{
             name(newvalue,oldvalue){
                  //计算属性可以接受两个参数,第一个参数是新的属性值,第二参数是老的属性值
                    // this.age
                    // console.log('name属性发生变化了')
                    console.log(newvalue,oldvalue)
                }

5.监听对象时

<script>
export default {
    data() {
        return {
            obj: {
                name: "张三",
                age: 20,
                children: [
                    {
                        name: "李四",
                        age: 27
                    },
                    {
                        name: "王五",
                        age: 23
                    }
                ]
            }
        };
    },
    watch: {
        obj: {
            handler: function(newVal, oldVal) {
                console.log("newVal:", newVal);
                console.log("oldVal:", oldVal);
            },
            deep: true,
            immediate: true
        },
        "obj.name": function(newVal, oldVal) {
            
            console.log("newVal obj.name:", newVal);
            console.log("oldVal obj.name:", oldVal);
        }
    },
};
</script>

监听对象的时候,需要加deep:true,这样才能深入底层去实时监听,如果没有加的话,对象是监听不到变化的。

immediate属性:布尔值
immediate:true:首次加载就监听数据变化
immediate:false:只有发生改变才监听

deep:true;

是开启深层次的监听,即所有属性都加上监听器,如果其中一个发生改变了就执行handler函数。

以上是关于Vue watch监测不到数据变化与新老值一样的主要内容,如果未能解决你的问题,请参考以下文章

vue-10 数据监测watch自学视频

angularJS 里的$watch的用法

2020-09-13 浅谈: Vue watch监听deep、immediate属性

Vue中watch的使用

vue 监听对象属性的变化

watch命令