请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于渲染watcher

老师您好,在响应式这章中给data添加get,每一个响应的属性都有一个dep,然后dep会把当前的渲染watcher加入数组中。在一个组件中多个响应数据的watcher应该是同一个实例对象吧。所以在后续的set中,如果一次修改多个数据,那么就会触发多次的dep通知。但是他们的watcher是同一个实例,在遍历watcherqueue依次执行每一个watcher.run()不就重复了吗,这个我有点不太理解

正在回答 回答被采纳积分+3

1回答

ustbhuangyi 2021-10-31 17:49:42

默认情况下这些都是异步 watcher,会先执行 queueWatcher 把 watcher 添加到一个队列中,然后在 nextTick 后执行一次 watcher.run。在添加的过程中,会做判断,并不会重复添加相同的 watcher。

0 回复 有任何疑惑可以回复我~
  • 提问者 zhaobao1830 #1
    嗯,看到了,会通过一个has对象保存以加入到队列的watcher队列,执行完又重置了。上次没看那么仔细。
    回复 有任何疑惑可以回复我~ 2021-11-02 10:21:16
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信