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值将会正常输出。
最后修改:2023 年 03 月 06 日
如果觉得我的文章对你有用,请随意赞赏