1
这是我的状态:使用对象分配到透明状态
export default new Vuex.Store({
state: {
items: [
],
user: {
isAuthenticated: false,
info: {
createdAt: '',
email: '',
firstName: '',
id: '',
lastName: '',
},
token: {
accessToken: '',
expiresIn: '',
refreshToken: '',
tokenType: '',
},
},
},
actions,
mutations,
getters,
plugins: [createPersistedState({
key: 'persistedState',
paths: ['user'],
})],
strict: process.env.NODE_ENV !== 'production',
});
我一直单独的用户默认状态 - 所以我不必每个属性在必要时手动复位。
export const defaultUser = {
isAuthenticated: false,
info: {
createdAt: '',
email: '',
firstName: '',
id: '',
lastName: '',
},
token: {
accessToken: '',
expiresIn: '',
refreshToken: '',
tokenType: '',
},
};
所以,当注销动作被触发:
export const logout = ({ commit, dispatch }) => {
commit(types.LOGOUT_USER);
dispatch('changeStatus', 'You need to login or register.');
};
[types.LOGOUT_USER](state) {
Object.assign(state.user, defaultUser);
},
但神奇有时整个用户对象似乎没有被替换...(或defaultState物体充满了最后的值?)
不会发布作为答案,因为我不在vue世界,但是这种'Object.assign'的使用会改变'state.user'。你可能想要'Object.assign({},state.user,defaultUser)'? –
是的,该文件被称为“突变”:) https://vuex.vuejs.org/en/mutations.html它应该如何发生(我知道Redux做它不同,我也在开始时想) –