Skip to content

watchEffect

watchEffect 是传入一个立即执行函数,默认第一次就会执行,且不需要传入监听内容,会自动收集函数内的数据源作为依赖,当依赖发生变化时会重新执行函数

vue
<script setup>
watchEffect(() => {
  // 会自动收集函数内使用到的属性作为依赖, 进行监听
  // 监听的是 userInfo.name 属性, 不会监听 userInfo
  console.log(userInfo.name);
});

watchEffect(
  () => {
    console.log("empty");
  },
  {
    flush: "pre", // 'pre' | 'post' | 'sync' 默认: 'pre'
    onTrack: (e) => {
      debugger;
    },
    onTrigger: (e) => {
      debugger;
    },
  }
);
</script>

部分时候使用 watchEffect 替代 watch,代码会简洁很多

vue
<script setup>
const todoId = ref(1);
const data = ref(null);

watch(
  todoId,
  async () => {
    const res = await fetch(`xxx/${todoId.value}`);
    data.value = await res.json();
  },
  { immediate: true }
);
</script>

可以替换为:

vue
<script setup>
watchEffect(async () => {
  const response = await fetch(`xxx/${todoId.value}`);
  data.value = await response.json();
});
</script>
2025( )
今日 8.33%
本周 42.86%
本月 48.39%
本年 4.11%
Powered by Snowinlu | Copyright © 2024- | MIT License