1.官方API说:Vuex 允许我们在 store 中定义getters
(可以认为是 store 的计算属性),但是我在我的学习项目里,发现getters
中定义的属性没有随state
输入而更新,要手动刷新一次页面getters
中的属性才更新;
2、具体代码实现是这样的(其中一个片段):
const userstore = new Vuex.Store({
state: {
userstate:JSON.parse(sessionStorage.getItem('user')) || {}
},
getters:{
logstate:function(state){
console.log("fhg:"+(state.userstate.id===undefined));//没登录时,userstate是一个空对象;
return (state.userstate.id===undefined);
}
})
3、我用vue-devtool查看,观察到的结果是如图1登录前,和图2登录后
观察结果是,userstate状态更新后,没有触发getters的更新,想知道为什么,求大神些解惑
首先你是通过sessionStorage的变化去导致state的改变,没有按照官网上的提交mutation,其次你在state里面定义了一个空对象userstate,为对象新增属性不能直接赋值,因为不是响应式,要用$set