2020-11-05 vue computed watcher缓存原理理解

data : {
a: 1
}
computed:{
b() {
return this.a + 1
}
}
当读取computed属性时候,会触发执行该属性对应的computedGetter 函数
// 如果watcher.dirty = true 即数据是脏数据 需要重新获取 调用evaluate()
// 如果watcher.dirty = false 即数据不是脏数据 直接返回缓存watcher.value

computedGetter () {
if(watcher.dirty) {
watcher.evaluate()
}
return watcher.value
}

evaluate() {
watcher.value = b() // watcher.getter()
watcher.dirty = false // 不脏
}

逻辑应该是a值改变就变脏了呀-----
当computed的属性发生变化时,数据变脏???
watcher.update () {
if (this.lazy) { // lazy = true 表示是computed
this.dirty = true;
}
}

你可能感兴趣的:(2020-11-05 vue computed watcher缓存原理理解)