当前位置: 首页 > 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 虚拟机篇
  • 三数之和:经典问题的多种优化策略
  • 美国将于6月14日举行阅兵式,美媒报当天是特朗普生日
  • 马克思主义理论研究教学名师系列访谈|薛念文:回应时代课题,才能彰显强大生命力
  • 五一假期前两日,多地党政主官暗访景点、商圈安全工作
  • 我国首个少数民族非遗纺织类国标正式实施
  • 微博:严厉打击对肖某董某事件蹭炒热点、编造故事博流量等行为
  • 三家“券商系”公募同日变更掌门人,新董事长均为公司股东方老将