当前位置:   article > 正文

vue中watch监听过程中,新值等于旧值的问题_vue 数组内的对象值,监听前后值相同为什么

vue 数组内的对象值,监听前后值相同为什么

监听对象或者数组时,就会出现这种情况,即使加了深度监听,发现newVal和oldVal还是一样,那是因为对象或者数组是引用类型,赋值的时候是指向地址的,地址指向堆区存储的值,所以对象变化的时候其实原值已经改变了,就出现了新值和旧值相等。

解决办法

1:直接监听对象里的属性,例,

data(){

        return{

                obj:{

                        arr:[],

                        b:' ',

                        c:' '

                }

        }

}

watch:{

        'obj.c'(newVal, oldVal){

                ......

        }

}

2、利用computed的缓存属性来监听,例,

computed:{
        newObj(){
                return JSON.stringify(this.obj) //这里用到深度拷贝
        }
}

watch:{

        newObj:{

                handler(newVal, oldVal){

                      ......... 

                 },

                deep:true

        }

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/113215?site
推荐阅读