如何禁用vuex getter缓存?

fei*_*sim 8 vue.js vuex

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

computed: {
  now: {
    cache: false,
    get() {
      return Date.now();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但我想知道这个功能是否适用于Vuex吸气剂

Mak*_*Mak 14

要"禁用"缓存,您可以利用这样一个事实,即要用作函数的getter不会被缓存.

来自vuex文档

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

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

getters: {
  myNonCachedGetter: state => () => {
    // original getter body
  }
}
Run Code Online (Sandbox Code Playgroud)

然后用它作为myNonCachedGetter().

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

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

getters: {
  myNonCachedGetter: state => (() => {
    // original getter body
  })()
}
Run Code Online (Sandbox Code Playgroud)

确实使代码看起来更难以阅读,但它可以被称为简单myNonCachedGetter.