Vue.js 使用vuex更新数组的所有对象属性

Vue.js 使用vuex更新数组的所有对象属性,vue.js,vuejs2,vuex,Vue.js,Vuejs2,Vuex,我正在尝试使用vuex从数组更新对象的单个属性 这是我存储文件中的代码 export default{ namespaced: true, state: { customers: null, }, mutations: { UPDATE_MODIFIED_STATE(state, value) { state.customers = [ ...state.customers.filter(item => item.Id !== v

我正在尝试使用vuex从数组更新对象的单个属性

这是我存储文件中的代码

export default{
  namespaced: true,
  state: {
    customers: null,
  },
  mutations: {
    UPDATE_MODIFIED_STATE(state, value) {
      state.customers = [
        ...state.customers.filter(item => item.Id !== value.Id),
        value,
      ];
    },
  },
下面的代码来自我的.vue文件

如您所见,我想更新对象的IsModified属性。 它工作得非常好。它正在更新每个客户对象的属性

只是想确定一下,这是更新数组对象的正确方法还是我应该使用的方法


如果是,我应该使用Vue.set,那么我在这里如何使用它。

您实际上不是在修改数组,您要做的是用筛选函数和传递的值生成的新数组替换原始数组。因此,在您的示例中,不需要使用Vue.set

您可以在中找到有关替换阵列的详细信息

但是,当您直接使用索引设置项或修改数组的长度时,就会开始注意事项。执行此操作时,数据将不再是反应性的,您可以阅读更多关于此的信息

例如,在变异中考虑以下内容:

// If you update an array item like this it will no longer be reactive.
state.customers[0] = { Id: 0, IsModified: true }

// If you update an array item like this it will remain reactive.
Vue.set(state.customers, 0, { Id: 0, IsModified: true })
// If you update an array item like this it will no longer be reactive.
state.customers[0] = { Id: 0, IsModified: true }

// If you update an array item like this it will remain reactive.
Vue.set(state.customers, 0, { Id: 0, IsModified: true })