Skip to content

监听器

watch() 用来监听明确的数据源。

ts
watch(search, (value, oldValue) => {
  console.log(value, oldValue);
});

数据源可以是 ref、getter 或数组:

ts
watch(
  () => user.name,
  (name) => {
    console.log(name);
  },
);

onWatcherCleanup() 可在 watch() 的同步回调内注册本轮清理任务:

ts
watch(search, () => {
  const timer = window.setTimeout(refresh, 300);
  onWatcherCleanup(() => window.clearTimeout(timer));
});

自动追踪副作用使用 useEffect()。它同样支持 syncprepost 调度,并通过返回函数声明清理逻辑。

flush 模式

ts
watch(source, callback, { flush: "post" });
模式含义
pre默认调度队列
postDOM 更新后队列
sync同步执行

需要清理异步任务时,使用回调的 onCleanup 参数或 onWatcherCleanup()