1 回答
TA貢獻1993條經驗 獲得超6個贊
問題本地存儲不是反應性的,因此您的吸氣劑永遠不會重新評估。
解決方案 您可以重寫您的 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;
}
},
好處:你的狀態和吸氣劑是同步的,但這也會讓你的吸氣劑變得多余。
添加回答
舉報
