https://cn.vuejs.org/v2/api/#vm-watch
注意:在变更 (不是替换) 对象或数组时,旧值将与新值相同,因为它们的引用指向同一个对象/数组。Vue 不会保留变更之前值的副本。
开发过程中,因为将一个对象内的属性进行了深度监听 导致 watch内 newVal,oldVal 值一样,无法进行新旧之是否相等的判断。
解决方法:
computed: {
newSetNodexAxis() {
return JSON.parse(JSON.stringify(this.setNode.xAxis))
},
}
在计算属性中,将这个值 深拷贝。
watch: {
newSetNodexAxis: {
handler(newVal, oldVal) {
// 做处理
},
deep: true, // 这个deep甚至可以不加了~
},
}
在watch监听这个计算属性,这时问题解决,newVal和oldVal值将会正常输出。