知道 computed 监听 data 的属性的原理,但是不太理解 computed 怎么监听其他的 computed 的?感觉 computed 不存在这依赖收集的过程鸭?
我举个例子吧
export default {
data () {
return {
a: 1,
}
},
computed: {
computedA () {
return this.a;
},
computedB () {
return this.computedA;
}
},
}
computedA
依赖了属性 a
,所以当属性 a
发生改变后,会导致 computedA
的 dirty
置为 true,从而使得在读取 computedA
的时候会去重新获取,而不是读取缓存的值。
computedB
依赖了 computedA
。但是好像在 computedA
改变后,会去通知 computedB
的 watcher 去更新 dirty
的值吗?
defineProperty能监听set当然也能监听get,就看看运行computed的过程中访问了哪些属性就行了
当然如果你初始化data时没初始化的属性有可能收集不到依赖