【发布时间】:2020-10-22 02:19:02
【问题描述】:
假设有这样的商店
...
state: {
filters: {
a: '',
b: ''
}
},
mutations: {
updateFilters(state, newObject) {
state.filters = newObject
}
}
...
还有这样的组件
...
<input v-model='filters.a'></input>
...
computed: {
filters: {
get() {
this.$store.state.filters
}
set(value) {
this.$store.commit('updateFilters', value)
}
}
}
...
一切正常,但我看到一个警告说
错误:“[vuex] 不在突变之外改变 vuex 存储状态 处理程序。”
所以我显然错过了一些东西
我不明白如何处理这个问题。 有人可以解释如何改变组件中的状态对象吗?
我知道,我可以改变每个过滤器道具,但是我在那个对象中有很多过滤器,所以在这种情况下改变每个道具并不是最好的解决方案。
【问题讨论】:
-
如果你这样做
state.filters ={newObject}你会得到同样的警告吗? -
是 ES6 简写语法
-
您可以使用具有 2 个参数的通用 mutator - 要变异的对象键(您的过滤器)和要设置的值。