如何禁用vuex getter缓存?

时间:2018-05-08 15:05:05

标签: vue.js vuex

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

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

但我想知道这个功能是否适用于 Vuex getters

1 个答案:

答案 0 :(得分:8)

To"禁用"缓存,你可以利用这个事实,即用作函数的getter不会被缓存。

来自the vuex docs

  

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

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

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

然后将其用作myNonCachedGetter()

事实证明以下内容并不适用于较新版本的vuex。

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

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

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