You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

watchEffect首个await后响应式属性追踪的疑问及解析

关于watchEffect依赖追踪的理解纠正

Vue官方教程明确说明:watchEffect仅在同步执行期间追踪依赖,使用异步回调时,仅首个await前访问的属性会被追踪。

你在看示例代码时,误以为todoId.value是在首个await之后访问的,按规则它不应被追踪,但实际该属性却被watchEffect追踪到了,核心误解点在于代码执行顺序:

示例代码:

watchEffect(async () => {
  const response = await fetch(
    `https://jsonplaceholder.typicode.com/todos/${todoId.value}`
  )
  data.value = await response.json()
})

实际todoId.value是在await fetch(...)的参数计算阶段同步访问的——在调用fetch函数时,需要先计算它的参数字符串,这个过程是同步完成的,完全发生在首个await执行之前,因此属于watchEffect会追踪的同步代码范围,所以能被正确追踪。

内容的提问来源于stack exchange,提问作者Amrmsmb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:27:18