watch用法小tip-Vue3

233 阅读1分钟

写vue3watch的时候因为只想监控checkedNumbers的值。

为什么不用computed?因为想要watch每一个接口上面headers的值,涉及到接口请求调用,所以用watch(如果想法不对,请各位不吝赐教,感谢大家!)

watch(
  () => checkedNumbers,
  { deep: true }
);

报了如下错误:

[Vue warn]: 'watch(fn, options?)' signature has been moved to a separate API. Use 'watchEffect(fn, options?)' instead. 'watch' now only supports 'watch(source, cb, options?) signature.

查了文档vue3的watch的语法,如下:

watch(
  source, // 监视的对象或 getter 函数
  callback, // 变化时调用的回调函数
  options? // 可选项,比如 deep: true
);

正常大家在变化的时候想要触发其他逻辑,就用要用到callback,所以要用下面的写法:

watch( () => checkedNumbers, // 需要监视的数据 
    (newVal, oldVal) => { console.log('Environment settings changed:', newVal); // 在变化时可以触发其他逻辑 }, 
    { deep: true } // 通过设置 deep: true,实现深度监听 
);

如果想要简写,如下,保留一个空函数即可

watch(
  () => checkedNumbers,
  () => {},
  { deep: true }
);