使用Vuex更新数组中的对象

时间:2018-05-19 06:11:09

标签: javascript vue.js vuejs2 vuex

如何使用Vuex更新阵列内的对象?我试过这个,但它不起作用:

const state = {
  categories: []
};

// mutations:
[mutationType.UPDATE_CATEGORY] (state, id, category) {
  const record = state.categories.find(element => element.id === id);
  state.categories[record] = category;
}

// actions:
updateCategory({commit}, id, category) {
  categoriesApi.updateCategory(id, category).then((response) => {
    commit(mutationType.UPDATE_CATEGORY, id, response);
    router.push({name: 'categories'});
  })
}

1 个答案:

答案 0 :(得分:13)

[mutationType.UPDATE_CATEGORY] (state, id, category) {
  state.categories = [
     ...state.categories.filter(element => element.id !== id),
     category
  ]
}

这可以通过替换'类别来实现。数组与原始数组没有匹配元素,然后将更新的元素连接到数组的末尾。

这种方法的一个警告是它破坏了数组的顺序,尽管在许多情况下不会成为问题。请记住一些事情。