[Vuex] stateを全て破棄する方法
ログアウト処理などで state をすべて破棄したい。
Vuex に組み込みでdestoryState()
,clearState()
的な API が生えているのを期待していたのだが、無いようなので泥臭く実装を行う。
方法
以下のような実装を行う。
const initialState = {
token: "",
isAuthenticated: false,
};
export const state = () => Object.assign({}, initialState);
export const mutations = {
destroySession(state) {
for (let key in state) {
if (initialState.hasOwnProperty(key)) {
state[key] = initialState[key];
}
}
},
};
簡単にいえば、対象の state をループで削除していく処理である。
state
はinitialState
と別で定義- mutations の
destroySession()
内で初期化 state
とinitialState
で key が一致しているものだけinitialState
で初期化する