当前位置: 首页 > 知识库问答 >
问题:

javascript - 为什么这种情况 vue3 watchEffect 会触发?

国兴文
2023-12-04
setup() {    const obj = reactive({});    watchEffect(() => {      console.log(obj);    })    obj.num = 3; // 触发 watchEffect 回调执行  },

reactive 收集依赖不是要通过 Proxy 触发 get 吗,为什么这里只是打印 obj(没有触发 get),也能够收集到依赖?

共有1个答案

吕永寿
2023-12-04

watchEffect 再创建侦听器的时候就会触发一次回调,和你改不改 obj.num 没有关系,后续才会根据收集的依赖是否有改变来判断是否需要执行回调。所以初次执行的时候打印一次是正常的,如果是初始化的时候就执行了两次,那么你要检查一下是不是代码的其他地方异步修改了数据,总之,并不是因为这里修改了 obj.num

 类似资料:
  • 问题内容: 因此,当我发现一些非常奇怪的东西时,我正在使用Node.js REPL和Underscore库。如果I ,则该变量是全局设置的(显然)。然后,当我尝试运行一个简单的命令时,它会打印出来(显然,再次)。但是,此后立即运行,因为变量设置为,它会打印。 为什么这样做呢?如果我从js文件运行相同的代码,则不会发生。这是正常的Node事情,还是全部错误? 仅供参考:节点v0.10.10 问题答案

  • 根据Java教程 将包装类型(整数)的对象转换为其相应的基元(int)值称为取消装箱。当包装类的对象为: 作为参数传递给需要相应基元类型的值的方法 分配给相应基元类型的变量 为什么在这种情况下会发生拆箱? 在这种情况下,这些事情发生在哪里?是否有管理数组中元素访问的底层方法?或者[]暗示某种变量?

  • 安装问题 PS C:\Users\Administrator sharp@0.21.3安装C:\用户\管理员\gatsby-site3\node_modules\锐(节点安装/libvips 使用缓存的C:\Users\Administrator\AppData\Roaming\npm-cache\u libvips\libvips-8.7.0-win32-x64.tar.gz info shar

  • 问题内容: 我编写了以下代码来实现Singleton模式: 当我编译此文件时,它应该生成Test.class和Test $ TestHolder.class,但它还会生成Test $ 1.class。这没有道理。那么,为什么以及如何呢? 问题答案: 类需要在中调用私有构造函数。但是它是私有的,实际上不能从另一个类中调用。因此,编译器发挥了作用。它 添加了一个仅知道的新的非私有构造函数!_该构造函数

  • Python中的字符串是不可变的,这意味着该值不能更改。我正在测试该场景,但看起来原始字符串已被修改。我只是想理解这个概念

  • 我正在Drools中编写一个规则集,以下情况会通过重新触发规则导致无限循环: 以下规则更改不会导致无限循环,即当ObjectB中不再引用a1时: 另一种不会导致无限循环的情况是当我将更改为 将“触发重新评估知识库中匹配对象类型的所有模式”,但由于我正在修改的字段field3没有在LHS条件中使用,我认为不应该重新评估。然而,我不能肯定这与引用a1有关。字段1位于ObjectB中,但我找不到具体的原