【发布时间】:2018-10-18 14:12:00
【问题描述】:
我知道您可以通过包含 cache: false 选项来禁用 Vue 计算属性 中的缓存。例如:
computed: {
now: {
cache: false,
get() {
return Date.now();
}
}
}
但我想知道此功能是否适用于 Vuex getter
【问题讨论】:
我知道您可以通过包含 cache: false 选项来禁用 Vue 计算属性 中的缓存。例如:
computed: {
now: {
cache: false,
get() {
return Date.now();
}
}
}
但我想知道此功能是否适用于 Vuex getter
【问题讨论】:
要“禁用”缓存,您可以利用以下事实:用作函数的 getter 不会被缓存。
请注意,通过方法访问的 getter 将在您每次调用它们时运行,并且结果不会被缓存。
如果您不介意在访问非缓存属性时添加括号(实际上是调用函数),您可以使用如下内容:
getters: {
myNonCachedGetter: state => () => {
// original getter body
}
}
然后将其用作myNonCachedGetter()。
事实证明,以下在较新版本的 vuex 中不起作用。
但是,如果您希望它看起来像一个普通的 getter,您可以将它包装到一个带有调用的函数中:
getters: {
myNonCachedGetter: state => (() => {
// original getter body
})()
}
它确实使代码看起来有点难以阅读,但它可以像myNonCachedGetter 一样简单地调用。
【讨论】: