在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
  }
}

因此,当反应性数据更改时,以computedwatch块编写的代码将仅执行一次。

09-30 13:26