Vue的Watcher参数都意味着什么?

时间:2019-06-24 05:29:20

标签: vue.js

我正在尝试调试一些Vue代码。我发现有些DOM元素在我不希望它们发生反应时会做出反应,反之亦然。我已经看过Vue Mastery Course on Advanced Components,但除了提供有关Vue反应性的原理外,它并没有使我越过界限。

以下是我在控制台中看到的示例:

enter image description here

当我检查Vue数据项(在这种情况下为四个对象的数组)时,您能否解释一下Chrome DevTools中显示的以下参数:

  1. 用户
  2. 懒惰
  3. 同步

关于(a)链接到相关文档和(b)关于调试Vue这方面的建议的要点。

1 个答案:

答案 0 :(得分:4)

我从源代码中知道的是:

deep很简单-它检查是否需要监视嵌套的值更改(root.of.my.element.changed

user是一个内部变量,它描述监视程序是由用户(在组件的watch部分中)创建的还是由系统内部创建的

lazy就像其他惰性修饰符一样-将使用内部缓存和组更新事件(观察程序处理程序);如果您一次更新多个对象属性,则很有用

sync-这是最棘手的,我所知道的是基于浏览代码的-它将监视程序标记为同步。如果设置为true,则每个更新将立即触发,并且基本上将阻止任何其他代码执行。即使您没有将lazy设置为true,监视程序仍将排队其回调,以异步方式工作,以免阻塞任何代码执行。 sync将强制执行

其他(感谢@Ohgodwhy):

immediate-在创建具有变量当前值的组件后立即触发观察者的回调