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'});
})
}
[mutationType.UPDATE_CATEGORY] (state, id, category) {
state.categories = [
...state.categories.filter(element => element.id !== id),
category
]
}
これは、「categories」配列を、一致する要素のない元の配列に置き換え、更新された要素を配列の最後に連結することにより機能します。
このメソッドの1つの注意点は、配列の順序が破壊されることです。ただし、多くの場合、問題にはなりません。心に留めておいてください。