1 回答

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
問(wèn)題本地存儲(chǔ)不是反應(yīng)性的,因此您的吸氣劑永遠(yuǎn)不會(huì)重新評(píng)估。
解決方案 您可以重寫(xiě)您的 getter,以便它僅在狀態(tài)尚未初始化時(shí)從本地存儲(chǔ)中檢索值。隨后的調(diào)用應(yīng)該直接訪問(wèn)該狀態(tài),因?yàn)槟诟哪脑鲎兤髦械臓顟B(tài),這將觸發(fā)對(duì)您的 getter 的重新評(píng)估,從而觸發(fā)您的計(jì)算屬性:
getters: {
totalItems(state){
if(state.totalItems.count < 0){
return JSON.parse(window.localStorage.totalItems || '{count: 0}')
}
return state.totalItems;
}
},
然后您可以初始化您的countwith -1,因此 getter 的第一次評(píng)估將查看本地存儲(chǔ)。
通過(guò)在你的 getter 中引用這個(gè)totalItems屬性,vue 知道只要這個(gè)屬性改變就重新評(píng)估這個(gè) getter。
這里的缺點(diǎn)是,在第一次更改計(jì)數(shù)之前,您的 getter 和您的狀態(tài)不會(huì)同步。
您可能還可以通過(guò)調(diào)用 localStorage 來(lái)初始化您的狀態(tài),然后從 getter 中刪除它。
state: {
totalItems: {
count: JSON.parse(window.localStorage.totalItems || '{count: 0}')
}
},
getters: {
totalItems(state){
return state.totalItems;
}
},
好處:你的狀態(tài)和吸氣劑是同步的,但這也會(huì)讓你的吸氣劑變得多余。
添加回答
舉報(bào)