こんにちはフロントエンドエンジニアのまさにょんです!
今回は、Vue・Vuex の stateの変更をcomputed と watchを使って検知する方法 について解説していきます。
目次
Vue・Vuex の stateの変更をcomputed と watchを使って検知する方法
Vuexの Store内で管理する Stateの変更を検知したい時があると思います。
そんな時は、computed と watchを使って検知するのが簡単なので、おすすめです。
SampleCodeを掲載しますので、ぜひ活用してみてください。
Vuex の Store: index.jsファイル
Sampleの Vuex の Store index.jsファイルは次のとおりです。
// 1. Store_State で、Globalに管理したい Dataを管理する
export const state = () => ({
// 1-1. UserData_Object
user: {},
// 1-2. CartItemList
cartItemList: [],
});
// 2. Gettersから、Vue_Component たちは、Stateを受け取る
export const getters = {
user: (states) => JSON.parse(JSON.stringify(states.user)),
cartItemList: (states) => JSON.parse(JSON.stringify(states.cartItemList)),
};
// 3. Mutation で、Store_State を Updateする
export const mutations = {
setUser: (states, user) => (states.user = user),
setCartItemList: (states, itemList) => (states.cartItemList = itemList),
};
Storeの Stateの変更を検知したい Component
Storeの Stateの変更を検知したい Componentでは、
次のようにcomputed
で storeから stateを取得して、それを watch
で変更を検知するようにcomputed
を登録しています。
data() {
return {
user: {},
cartItemList: [],
};
},
computed: {
// 1. computed で、Storeから Stateを取得する
getUserData() {
return this.$store.getters.user;
},
getCartItemList() {
return this.$store.getters.cartItemList;
},
},
// 2. watch に変更を検知する_Computedたちを登録している
watch: {
// 3. Store.State が変更されたら、watchが検知する
getUserData(newValue, oldValue) {
this.user = newValue;
},
getCartItemList(newValue, oldValue) {
this.cartItemList = newValue;
},
},
JavaScript書籍 Ver. 中級-上級者向け
JavaScript書籍 Ver. 初級者向け
Twitterやってます!Follow Me!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!