监听器
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()。它同样支持 sync、pre、post 调度,并通过返回函数声明清理逻辑。
flush 模式
ts
watch(source, callback, { flush: "post" });| 模式 | 含义 |
|---|---|
pre | 默认调度队列 |
post | DOM 更新后队列 |
sync | 同步执行 |
需要清理异步任务时,使用回调的 onCleanup 参数或 onWatcherCleanup()。
