Vue 面试题 目录

Vue 3 中 watchEffect 和 watch 的区别是什么?

推荐答案

在 Vue 3 中,watchEffectwatch 都是用于监听响应式数据变化的 API,但它们的使用场景和行为有所不同。

  • watchEffectwatchEffect 会自动追踪其回调函数中使用的响应式依赖,并在这些依赖发生变化时立即执行回调函数。它不需要显式指定要监听的数据源,适合用于处理副作用逻辑。

  • watchwatch 需要显式指定要监听的数据源,并且可以监听多个数据源。它提供了更细粒度的控制,允许你在数据变化时执行特定的回调函数,并且可以获取变化前后的值。

本题详细解读

watchEffect

  • 自动依赖追踪watchEffect 会自动追踪回调函数中使用的所有响应式依赖,并在这些依赖发生变化时重新执行回调函数。
  • 立即执行watchEffect 在首次调用时会立即执行一次回调函数。
  • 无返回值watchEffect 没有返回值,通常用于处理副作用逻辑,如 DOM 操作、异步请求等。
-- -------------------- ---- -------
------ - ---- ----------- - ---- ------

----- ----- - -------

-------------- -- -
  ------------------ --- -----------------
---

-- --- ----- --- -
-------------- -- --- ----- --- -

watch

  • 显式依赖watch 需要显式指定要监听的数据源,可以是单个响应式引用、计算属性或一个包含多个数据源的数组。
  • 变化前后值watch 的回调函数可以接收变化前后的值,方便进行比较或处理。
  • 懒执行watch 默认不会在首次调用时立即执行回调函数,除非设置 { immediate: true }
-- -------------------- ---- -------
------ - ---- ----- - ---- ------

----- ----- - -------

------------ ---------- --------- -- -
  ------------------ ------- ---- ----------- -- --------------
---

-------------- -- --- ----- ------- ---- - -- -

总结对比

特性 watchEffect watch
依赖追踪 自动 显式指定
立即执行 可选(通过 { immediate: true }
变化前后值
适用场景 副作用逻辑 细粒度控制,需要变化前后值

通过以上对比,可以根据具体需求选择使用 watchEffectwatch

纠错
反馈