1 回答
TA贡献1993条经验 获得超5个赞
问题本地存储不是反应性的,因此您的吸气剂永远不会重新评估。
解决方案 您可以重写您的 getter,以便它仅在状态尚未初始化时从本地存储中检索值。随后的调用应该直接访问该状态,因为您正在更改您的增变器中的状态,这将触发对您的 getter 的重新评估,从而触发您的计算属性:
getters: {
totalItems(state){
if(state.totalItems.count < 0){
return JSON.parse(window.localStorage.totalItems || '{count: 0}')
}
return state.totalItems;
}
},
然后您可以初始化您的countwith -1,因此 getter 的第一次评估将查看本地存储。
通过在你的 getter 中引用这个totalItems属性,vue 知道只要这个属性改变就重新评估这个 getter。
这里的缺点是,在第一次更改计数之前,您的 getter 和您的状态不会同步。
您可能还可以通过调用 localStorage 来初始化您的状态,然后从 getter 中删除它。
state: {
totalItems: {
count: JSON.parse(window.localStorage.totalItems || '{count: 0}')
}
},
getters: {
totalItems(state){
return state.totalItems;
}
},
好处:你的状态和吸气剂是同步的,但这也会让你的吸气剂变得多余。
添加回答
举报