我有一个如下所示的vuex状态:
null
在我的组件中:
state: {
myObj: {someArrayAttribut: [...], ...}
}
该方法可以删除其工作原理,但是vuex文档明确指出:
computed: {
...mapState("module", [myObj])
},
methods: {
remove(i) {
this.myObj.someArrayAttribut.splice(i, 1)
}
}
当我可以直接在组件中更新状态时,我觉得我浪费了很多时间来声明突变。
那我做的事怎么了?
答案 0 :(得分:0)
引擎盖Vuex
使用与Vue
相同的反应系统。因此,任何会在Vue中触发更新的东西都会在Vuex中触发更新。
Array.splice
和其他用户就是这种情况。
您不应该从外部突变中更新状态的主要原因是,突变还可以确保数据完整性。
通过直接更新状态,您将失去这一点,并尝试调试此类问题是很痛苦的。