Vue深度监听对象时,新旧值一致时的解决方法


有时候我们定义了一个对象

data() {
        return {           
            obj: {
                num: 0,
            },           
        }
    }

想要深度监听它时, 

watch: {
        obj: {
            deep: true,
            handler(newVal, oldVal) {
                console.log(newVal.num, oldVal.num);
            }
        }
    }

会发现打印的新值和旧值是一样的

 这个时候可以使用计算属性,深拷贝我们想要监听的对象

computed: {
        obj1() {
            return JSON.parse(JSON.stringify(this.obj))
        }
    },

记得把watch里的监听对象名字一并修改

watch: {
        obj1: {
            deep: true,
            handler(newVal, oldVal) {
                console.log(newVal.num, oldVal.num);
            }
        }
    }

这个时候就可以正确打印新值和旧值啦

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM