以登陆退出为例,我这里使用的是sessionStorage去处理
(具体用localStorage(手动清除,数据消失)还是sessionStorage(会话窗口关闭,数据消失),可根据具体需求而定,处理方法流程同)
1.在改变state时候改变sessionStorage里面的值,使其值与state中更新后的值一致
//loginState传入true与false判定执行登陆还是退出
const mutations = {
alterLogin(state,loginState){
if(loginState){
sessionStorage.setItem('isLogin',true)
}else{
sessionStorage.removeItem('isLogin')
}
state.isLogin=loginState
}
}
2.getters去取定义好的状态值,并在组件中使用
//组件中使用getters进行数据获取
const state={
isLogin:false
}
const getters = {
getLogin(state){
if (!state.isLogin) {
state.isLogin=sessionStorage.getItem('isLogin')
}
return state.isLogin
}
}
遇到问题:
1.取出数据"[Object Object]",解决如下
sessionStorage以及localStorage只能存储字符串,设置对象格式数据时候记得进行序列化;使用时进行反序列化,示例如下:
//序列化存入
sessionStorage.setItem('userData',JSON.stringify(loginState.userdata))
//反序列化取出
JSON.parse(loginState.userdata)
这样,再试试一下,OK啦!