为什么在vuex的文档说不应该对对象的数组类型属性进行拼接时?

时间:2019-04-03 14:22:51

标签: vue.js components state vuex

我有一个如下所示的vuex状态:

null

在我的组件中:

state: {
  myObj: {someArrayAttribut: [...], ...}
}

该方法可以删除其工作原理,但是vuex文档明确指出: computed: { ...mapState("module", [myObj]) }, methods: { remove(i) { this.myObj.someArrayAttribut.splice(i, 1) } }

当我可以直接在组件中更新状态时,我觉得我浪费了很多时间来声明突变。

那我做的事怎么了?

1 个答案:

答案 0 :(得分:0)

引擎盖Vuex使用与Vue相同的反应系统。因此,任何会在Vue中触发更新的东西都会在Vuex中触发更新。

Array.splice和其他用户就是这种情况。

您不应该从外部突变中更新状态的主要原因是,突变还可以确保数据完整性。

通过直接更新状态,您将失去这一点,并尝试调试此类问题是很痛苦的。