分かりにくい標題で申し訳ありません。
Storeを利用する場合は、
Storeディレクトリにindex.jsファイルを作成して、state, getters, mutations, actionsを記述していくかと思います。
しかし、index.js以外の情報をStoreで保持したい場合はどうでしょうか。Storeで複数ファイルを利用する方法と、データアクセス方法について解説していきます。
Storeディレクトリの配下を下記とします。
※me.jsは認証ユーザーの情報を保持するStoreとします。
/* 省略 */
Store
L index.js
L me.js
①:stateへのアクセス
まずは、stateへのアクセスについて見ていきたいと思います。
index.jsのstate
export const state = () => ({
txt: 'texttext',
})
// state以外省略
me.jsのstate
export const state = () => ({
id: 0,
name: 'taro',
email: 'taro@gmail.com',
})
// state以外省略
consoleで確認していきます。
任意のComponent内で、下記consoleを実施して下さい。
console.log(store.state);
結果は下記が出力されます。
me: (...)
txt: "texttext"
これは何が出力されたのでしょうか。
ドリルダウンしてme: (…)の中身をクリックしてみると。下記が表示されます。
me: Object
id: 1
name: "taro"
email: 'taro@gmail.com',
つまり、console.log(store.state);はStoreに保持している全てのstateを出力しました。しかし、index.jsファイルと、me.jsファイルではアクセス方法が少し異なります。
①-1;me.jsのstateをダイレクトにアクセス
次に、me.jsのstateをダイレクトにアクセスしてみます。下記のconsoleを呼び出して下さい。
console.log(store.state.me);
結果は下記です。 単純ですね。
id: 1
name: "taro"
email: 'taro@gmail.com',
②:actions, mutationsへのアクセス
それでは、他のメソッドについても見ていきます。
me.jsにてactions, mutationsを定義していきます。
export const mutations = {
setMe(state, payload) {
state.id = payload.id
state.name = payload.name
},
}
export const actions = {
async setMeActions({ commit, state }, payload ) {
// console.log(state);
commit('setMe', payload)
},
}
任意のComponent内から、me.js内のactions, mutationsへアクセスする方法は下記です。
store.dispatch('me/setMe' ,payload )
store.commit('me/setMeActions' ,payload )