vuexでのmutationsとactionsについて
例えばユニークなIDの配列を保持し追加削除する場合、既に追加されてるかどうかの判定が必要になります。この判定をmutationで行なうべきか、actionで行なうべきか、それとも両方で行なうべきか、悩みます。
mutationの処理が走る場合は必ず変更される方がいい気がします。そうするとactionでstateを見て必要ならばmutationの処理を走らすという流れにしたくなります。しかしvueではmutationの実行は一応はどこからでもできるのでactionのみに変更するかしないかの分岐を書くのも不安です。そもそも「commitする場合は必ず変更される」という考え方自体どうなのか。。。。
ご意見聞かせてください。
state: {
someList: [1,2,3],
},
mutations: {
add(state, id){
state.someList.push(id);
},
remove(state, id){
state.someList.splice(state.someList.indexOf(id), 1);
},
},
actions: {
add({commit, state}, {id}){
if ( state.someList.indexOf(id) < 0 ) {
commit('add', id);
}
},
remove({commit, state}, {id}){
if ( state.someList.indexOf(id) >= 0 ) {
commit('remove', id);
}
},
}