vue將數據存入vuex裏面,在進行頁面刷新的時候,數據丟失,這裏有兩個解決辦法應對不同場景:
第一種
假如你的路由跳了3層以上,而且這幾個頁面都要用同一個數據roomId
,肯定想到路由傳參的方式傳roomId
,那麼問題來了:
1,就像微信公衆號下面(瀏覽器上面)的倒退和前進按鈕,點來點去的,參數就沒了。
2,刷新頁面參數丟失了(當然query傳參方式不會丟失,但是它會顯示在地址欄還有大小限制)
ok,解決方法:
- 初始化得到
roomId
後,存入sessionStorge
Vuex
裏面的state
直接讀取存入sessionStorge
的這個roomId
- 在頁面修改
roomId
的時候,提交mutation
修改Vuex
裏面存的roomId
,同時將這個roomId
存入sessionStorge
- 頁面裏面用到
roomId
的地方都去從Vuex
裏面讀取
敘述起來很囉嗦,操作很簡單,這是朕最喜歡的辦法 這樣無論你在哪個頁面進行刷新,怎麼前進後退,數據都在。
第二種:
將請求這個數據源的辦法放在vuex
裏面進行請求,在App.vue
裏面進行提交,確保每次刷新都會拿到數據:
// store
state: {
dataList: []
},
mutations: {
getDate(state) {
this.$get('').then(res => {
state.dataList = res.data
})
},
},
// App.vue
mounted () {
this.$store.commit('getDate')
},
然後在你刷新的頁面獲取state.dataList
就醬~
~歡迎更新更快更有效的解決辦法