【问题标题】:How can I disable vuex getter caching?如何禁用 vuex getter 缓存?
【发布时间】:2018-10-18 14:12:00
【问题描述】:

我知道您可以通过包含 cache: false 选项来禁用 Vue 计算属性 中的缓存。例如:

computed: {
  now: {
    cache: false,
    get() {
      return Date.now();
    }
  }
}

但我想知道此功能是否适用于 Vuex getter

【问题讨论】:

    标签: vue.js vuex


    【解决方案1】:

    要“禁用”缓存,您可以利用以下事实:用作函数的 getter 不会被缓存。

    来自the vuex docs

    请注意,通过方法访问的 getter 将在您每次调用它们时运行,并且结果不会被缓存。

    如果您不介意在访问非缓存属性时添加括号(实际上是调用函数),您可以使用如下内容:

    getters: {
      myNonCachedGetter: state => () => {
        // original getter body
      }
    }
    

    然后将其用作myNonCachedGetter()

    事实证明,以下在较新版本的 vuex 中不起作用。

    但是,如果您希望它看起来像一个普通的 getter,您可以将它包装到一个带有调用的函数中:

    getters: {
      myNonCachedGetter: state => (() => {
        // original getter body
      })()
    }
    

    确实使代码看起来有点难以阅读,但它可以像myNonCachedGetter 一样简单地调用。

    【讨论】:

      猜你喜欢
      • 2017-11-18
      • 2018-03-28
      • 2018-05-22
      • 2018-02-22
      • 2018-02-09
      • 1970-01-01
      • 2011-02-20
      • 2012-04-29
      • 2013-09-14
      相关资源
      最近更新 更多