fe-interview
fe-interview copied to clipboard
说说vue中computed的实现原理
我们知道vue的响应式基于发布订阅模式,依赖的收集追踪,一个属性被调用的函数,都放到订阅数组里,每依赖函数都是一个Watcher,computed中依赖该属性,那么Dep里就有一个惰性的Watcher,为什么成为惰性的?是因为,在取值操作的时候会返回上一次计算结果。如果依赖值更新了,就会notify通知Watcher重新计算。
换种说法,computed中的属性,通过代理,代理到vue的data上,data上的属性都被依赖监听,当computed属性依赖的data改变时,会触发通知订阅者更新,于是computed的属性就重新计算了。