当前位置: 首页 > news >正文

watchEffect 里有响应式依赖时并没有自动追踪

watch,watchEffect 在异步操作中,它只追踪回调同步执行期间访问的属性,而在异步回调中,只有在第一个 await 之前访问到的依赖才会被追踪。 这是因为watchEffectwatch默认只在同步执行期间追踪依赖项的变化。

watchEffect(
  async (aaa) => {
    const response = await fetch(
      `https://img.bosszhipin.com/static/file/2023/${x.value}`
    )
    console.log('watchEffect', y.value)
  }
)

原因:y.value放在 await fetch后面,放它前面就会自动追踪。

下面写法也可以自动追踪

watchEffect(async (aaa) => {
  fetch(`https://img.bosszhipin.com/static/file/2023/${x.value}`)
    .then((response) => response.json())
    .then((json) => console.log(json))
  console.log('watchEffect', y.value)
})

下面方法也可以 y.value 肯定为 true,在await前用一下即可

watchEffect(async (aaa) => {
  if(y.value) {
    fetch(`https://img.bosszhipin.com/static/file/2023/${x.value}`)
      .then((response) => response.json())
      .then((json) => console.log(json))
  }
  await nextTick()
  // y.value = (await response.json()).nm
  console.log('watchEffect', y.value)
})

相关文章:

  • C++关键字之mutable
  • Tesseract OCR:起源、发展与完整使用指南
  • 多线程篇学习面试
  • 请谈谈 Vue 中的 key 属性的重要性,如何确保列表项的唯一标识?
  • 设计模式Python版 中介者模式
  • Vue 3 + Vite 项目中配置代理解决开发环境中跨域请求问题
  • Linux系统管理与编程01:准备工作
  • vim 多个关键字高亮插件介绍
  • A. Jagged Swaps
  • mybatis从接口直接跳到xml的插件
  • 不同activity的mViewModel是复用同一个的还是每个activity都是创建新的ViewModel
  • DeepSeek各模型现有版本对比分析
  • Python selenium 库
  • 轻松将 Python 应用移植到 Android,p4a 帮你实现
  • 485. 最大连续 1 的个数
  • 深入了解ThreadLocal底层原理-高并发架构
  • LLM2CLIP论文学习笔记:强大的语言模型解锁更丰富的视觉表征
  • Hot100 动态规划
  • 【Java 面试 八股文】JVM 虚拟机篇
  • 三数之和:经典问题的多种优化策略
  • 古籍新书·2025年春季|中国土司制度史料集成
  • 李勇已任内蒙古乌兰察布市委副书记,曾在中央编办任职
  • 兵韬志略|美菲“肩并肩”军演超越传统范畴,凸显防务合作重大转型
  • 剪纸纹样“流动”在水乡,谁不忆江南
  • 财政部、证监会:加强对会计师事务所从事证券服务业务的全流程监管
  • 政治局会议:要提高中低收入群体收入,设立服务消费与养老再贷款