詳解vue頁面狀態(tài)持久化詳解
需求:左樹右表。組織樹選中某一節(jié)點后,進(jìn)入詳情頁面,再返回時需要保持選中。其他查詢條件也需要保持狀態(tài)。
思路:用vuex結(jié)合localStorage緩存數(shù)據(jù)。點擊樹節(jié)點或查詢按鈕時,將數(shù)據(jù)保存在vuex中,同時存在localStorage中;頁面回退時,將存在localStorage中的數(shù)據(jù)放到vuex中,在頁面代碼中判斷vuex中是否有我們存的數(shù)據(jù),有則直接用,沒有則默認(rèn)初始數(shù)據(jù)。當(dāng)頁面導(dǎo)航路由跳轉(zhuǎn)時再清除緩存的頁面數(shù)據(jù)。
代碼:
點擊某樹節(jié)點時,存下id至vuex中。通過dispatch觸發(fā)action
this.$store.dispatch('SetDeviceFaultId', data.id)
?在vuex的actions中,通過commit?觸發(fā) mutations 中的方法
RemoveDeviceFaultId({ commit }) { //后面清除數(shù)據(jù)時會用到
commit('REMOVE_DEVICEFAULTID');
},
SetDeviceManageId({ commit }, id) {
commit('SET_DEVICEMANAGEID', id);
},
mutations:修改數(shù)據(jù)
REMOVE_DEVICEFAULTID: (state) => {
state.devicFaultId = null
Storage.remove('devicFaultId');
},
SET_DEVICEMANAGEID: (state, deviceManageId) => {
state.deviceManageId = deviceManageId
Storage.set('deviceManageId', deviceManageId);
}
state:頁面剛創(chuàng)建時從localStorage中拿緩存的數(shù)據(jù)
devicFaultId: Storage.get('devicFaultId'),
進(jìn)入某詳情頁,回退時
this.params.organizeId = this.$store.state.tree.devicFaultId ? this.$store.state.tree.devicFaultId : res.data[0].id;
點擊其他路由時,記得清除緩存的數(shù)據(jù)
this.$store.dispatch('RemoveDeviceFaultId')
補(bǔ)充:
storage.js代碼

?在vuex中引入后就可以通過Storage.set使用啦

總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
使用reactive導(dǎo)致數(shù)據(jù)失去響應(yīng)式的原因和解決方案
在 Vue 的響應(yīng)式系統(tǒng)中,reactive 對象是一個深度代理,它會追蹤對象屬性的變更,但如果你將整個對象重新賦值,那么 Vue 無法繼續(xù)追蹤新的對象,本文給大家介紹了使用reactive導(dǎo)致數(shù)據(jù)失去響應(yīng)式的原因和解決方案,需要的朋友可以參考下2024-09-09
Vue-CLI 3.X 部署項目至生產(chǎn)服務(wù)器的方法
這篇文章主要介紹了Vue-CLI 3.X 部署項目至生產(chǎn)服務(wù)器的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
vue2+elementui上傳照片方式(el-upload超簡單)
這篇文章主要介紹了vue2+elementui上傳照片方式(el-upload超簡單),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03

