Vue监听属性 watch

watch属性监听Vue实例中的所有变量和计算结果

监听data中的自定义变量

watch: {
  num(newVal, oldVal) {
    // newVal 变量num改变后的值
    // newVal 变量num改变前的值
    // 当变量num发生改变,执行当前回调
  },
},
data() {
  return {
    num: 1,
  };
}

监听computed计算属性的计算结果

watch: {
  site(newVal, oldVal) {
    // newVal 计算属性site计算后的值
    // newVal 计算属性site计算前的值
    // 当计算属性site的计算结果发生改变,执行当前回调
  },
},
computed: {
  site: {
    get() {
      return this.num;
    },
  },
},

watch监听属性辅助选项

选项:deep

watch: {
  obj: {
    handler(newVal, oldVal) {
      console.log("newVal ===>>>", newVal);
      console.log("oldVal ===>>>", oldVal);
    },
    deep: true,
  },
},
data() {
  return {
    obj: {
      name: "张三",
      sex: "18",
    },
  };
}

deep选项为true时, 可进行指针的深度监听,不只是对象,数组也是同样会被深度监听

选项:immediate

watch: {
  obj: {
    handler(newVal, oldVal) {
      console.log("newVal ===>>>", newVal);
      console.log("oldVal ===>>>", oldVal);
    },
    deep: true,
    immediate: true,
  },
}

immediate选项为true时,当前监听回调函数会在Vue实例加载时立即触发回调

posted @ 2021-04-20 01:44  调用Function  阅读(507)  评论(0编辑  收藏  举报