关于childOb.dep.depend()

来源:4-10 检测变化的注意事项

慕九州5549167

2020-08-18

一开始没看懂,后来看了下其他同学和老师的问答。 observe(子对象) 时定义的响应式对象只能响应已经存在的属性,添加属性不会触发setter以及渲染watcher重新渲染。只能手动 ob.dep.notify(),因为在 observe(父对象) 时会通过 childOb.dep.depend() 订阅了渲染watcher,所以能触发重新渲染。有个问题,对于子对象,通过childOb.dep.depend()收集的是渲染watcher和父亲的自定义watcher,dep.depend()收集的是渲染watcher和自己的自定义watcher,是这样吗?

写回答

1回答

ustbhuangyi

2020-08-19

在执行depend 的时候,无论是  childOb.dep.depend 还是 dep.depend,收集都是同一个当前计算的 watcher ——Dep.target。 至于是 render watcher 还是 user watcher 取决于这个对象是什么时候被访问的而已。

0
1
慕九州5549167
非常感谢!
2020-08-19
共1条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4986 学习 · 1038 问题

查看课程