在Vue docs it is mentioned中,与使用常规方法相反,已智能地缓存了计算的属性:
我的问题是:watched properties是否也像计算属性一样具有缓存? (包括观看Vuex,例如使用vm.$store.watch...
)
最佳答案
watchers
的行为与computed
的行为相同,因为computed
是在内部使用watchers
实现的。当一个人定义了computed
属性时,vue在内部将watcher设置为用于计算属性的变量,请参见source中的以下代码:
function makeComputedGetter (getter: Function, owner: Component): Function {
const watcher = new Watcher(owner, getter, noop, {
lazy: true
})
return function computedGetter () {
if (watcher.dirty) {
watcher.evaluate()
}
if (Dep.target) {
watcher.depend()
}
return watcher.value
}
}
因此,当反应性数据更改时,以
computed
或watch
块编写的代码将仅执行一次。