vuex确实好用,但是它也有致命的缺点不能够永久存储。
我们可以利用h5中的localStorage或sessionStorage实现永久存储。
思路:
在登录时(一般情况都是登录)将数据(以token为例)存储在vuex和sessionStorage/localStorage中
注意:本地存储和vuex中都要存储!
store中的mutations:
mutations: {
//设置用户信息
setUser(state, user) {
state.loginUserInfo = user;
sessionStorage.setItem('loginUserInfo', JSON.stringify(user));
},
登录时设置vuex
this.$store.commit('setUser', obj);
由于vuex中的数据刷新每次刷新都会丢失,我们让state从sessionStorage中读取数据
第一次在登录页面本地存储无数据时,state就为空
store的state:
state: {
loginUserInfo: JSON.parse(sessionStorage.getItem("loginUserInfo"))|| {
userInfoVo: {
id: null,
account: '',
userName: '',
gender: '',
age: null,
phone: null,
role: '',
},
token: null,
}
},