Vue最新版本中,computed watcher update 方法的问题
来源:5-2 计算属性 VS 侦听属性(2)

qq_三又木_04194201
2019-09-15
因为直接下载了最新版本的vue源码学习,所以可能和老师的版本不太一样。
// Vue 2.6.10版本
Watcher.prototype.update = function update() {
debugger
/* istanbul ignore else */
if (this.lazy) {
this.dirty = true
} else if (this.sync) {
this.run()
} else {
queueWatcher(this)
}
}
老师视频中的版本
在新版本中也没有getAndInvoke这个方法来,对比computed value来减少渲染。
是为什么呢,删除这种对比呢,全都放在queueWatcher中一起渲染?
写回答
1回答
-
课程录制的是 2.5.17-beta 版本,这个版本的计算属性实现很有意思,和其它版本都不同(最新版本的实现其实和之前版本的实现是一致的)。
视频版本的计算属性实现思想是——多计算,少更新,也就是每次都去计算,只有计算结果变了,才会去触发更新,比如一个计算属性有多个依赖发生变化,但是它们最终计算的结果没变,是不会触发更新的。
最新版本的计算属性实现思想是——少计算,多更新,一旦计算属性的依赖发生变化,不管最终计算的结果有没有变化,都会触发更新。222019-09-16
相似问题