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

问题描述 投票:0回答:1

我有一个vuex状态,看起来像这样:

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

在我的组件中:

computed: {
  ...mapState("module", [myObj])
},
methods: {
  remove(i) {
    this.myObj.someArrayAttribut.splice(i, 1)
  }
}

该方法删除了作品,但效果很好,但是vuex文档明确指出,The only way to actually change state in a Vuex store is by committing a mutation.

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

那么我做的事怎么了?

vue.js components state vuex
1个回答
0
投票

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

Array.splice和其他情况就是这样。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.