说说你对vue中watch的immediate和deep的理解

在 Vue.js 中,watch 是一个非常有用的选项,用于观察和响应 Vue 实例上的数据变化。watch 可以接收两个特定的选项:immediatedeep,这两个选项在特定场景下非常有用。

immediate

immediate 属性是一个布尔值,默认为 false。当设置为 true 时,watch 会在初始化时立即调用一次回调函数,而不是等到观察的数据第一次变化时才触发。

例如:

export default {
  data() {
    return {
      value: 1
    };
  },
  watch: {
    value: {
      handler(newValue, oldValue) {
        console.log(`value changed from ${oldValue} to ${newValue}`);
      },
      immediate: true
    }
  }
};

在这个例子中,组件被创建时,watch 会立即触发一次,输出 value changed from undefined to 1。然后,每当 value 发生变化时,watch 都会再次触发。

deep

deep 属性也是一个布尔值,默认为 false。当设置为 true 时,watch 会深度遍历观察的对象,以便在其嵌套属性发生变化时也能触发回调函数。这对于观察复杂对象(如数组或嵌套对象)非常有用。

例如:

export default {
  data() {
    return {
      obj: {
        a: 1,
        b: 2
      }
    };
  },
  watch: {
    obj: {
      handler(newValue, oldValue) {
        console.log('obj changed');
      },
      deep: true
    }
  }
};

在这个例子中,如果你更改 obj.aobj.b 的值,watch 会触发回调函数,因为 deep 选项被设置为 true。如果没有 deep 选项,只有当 obj 本身被替换为一个新的对象时,watch 才会触发。

总结

  • immediate:让 watch 在初始化时立即触发一次。
  • deep:让 watch 深度观察对象,以便在其嵌套属性发生变化时也能触发。

这两个选项可以单独使用,也可以一起使用,以满足不同的观察需求。

posted @   王铁柱6  阅读(215)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示