解決vuex數(shù)據(jù)頁面刷新后初始化操作
在vue項目的開發(fā)中經(jīng)常會用到vuex來進行數(shù)據(jù)的存儲,然而在開發(fā)過程中會出現(xiàn)刷新后頁面的vuex的state數(shù)據(jù)初始化問題!下面是我用過的解決方法
1、利用storage緩存來實現(xiàn)vuex數(shù)據(jù)的刷新問題
我們可以在mutation等vuex的方法中對于數(shù)據(jù)進行改變時,將數(shù)據(jù)同時存儲進我們的本地瀏覽器緩存中;下面是我在mutation中寫的方法;
同步將數(shù)據(jù)的更改保存,也可以在頁面調(diào)用vuex的mutation方法時同步更改;但是這種方法只能針對少量的數(shù)據(jù)需要保持不刷新,在真正的卡發(fā)中并不適用
2、利用已有的插件來進行保存新狀態(tài)
一致的插件中,我目前使用的是vuex-along插件,該插件使用非常方便簡潔。
通過 cnpm i vuex-along -D下載插件,在進行引入,在store里面通過plugin來使用,這樣就能將所有的state的數(shù)據(jù)都進行保存,不回應為刷新而更改,當然如果你想僅對某些數(shù)據(jù)進行保存,也可以使用對應的插件的api來實現(xiàn),具體的api請看github;
上面的代碼僅為展示vuex-along插件的使用,項目的真實寫法并不規(guī)范,對于一般項目會將vuex的每個模塊獨立拆分出來,分別進行管理
同時在項目中我們也都盡量使用輔助函數(shù)來實現(xiàn)vuex的管理,而不會應用原生的寫法
對于state和getter的數(shù)據(jù)可以在計算屬性中來因夠用。而mutation和action則在methods方法應用;如果你需要修改計算屬性,現(xiàn)在需要設置對應的setter。
以上純屬自己的一點意見,如果需要請采納!
補充知識:vuex在刷新頁面時保持數(shù)據(jù)不變(vuex狀態(tài)持久化)
問題:
在 vue 項目中使用 vuex 來進行數(shù)據(jù)狀態(tài)的管理,當刷新頁面時,vuex 中 state 的數(shù)據(jù)會出現(xiàn)初始化問題(數(shù)據(jù)丟失)
解決方法:
1.使用 webStorage 緩存
當瀏覽器窗口關閉或者刷新時,會觸發(fā)beforeunload事件,此時,可以使用 webStorage 緩存來實現(xiàn) vuex 在刷新頁面時保持數(shù)據(jù)不變
created(){ //在頁面加載時讀取sessionStorage里的狀態(tài)信息 this.$store.state.userInfo = window.sessionStorage.getItem("userInfo") //在頁面刷新時將vuex里的信息保存到sessionStorage里 window.addEventListener("beforeunload", () => { window.sessionStorage.setItem("userInfo", this.$store.state.userInfo) }) }
2.使用vuex狀態(tài)持久化插件vuex-persistedstate
vuex-persistedstate插件使用瀏覽器的本地存儲( local storage )對 vuex 的狀態(tài)( state )進行持久化
安裝 vuex-persistedstate:
npm install vuex-persistedstate --save-dev
在store文件夾的 index.js 中使用
//引入vuex-persistedstate import createPersistedState from 'vuex-persistedstate' ...... export default new Vuex.Store({ ...... //配置vuex-persistedstate plugins: [createPersistedState( //配置將vuex的狀態(tài)儲存到sessionStorage中(默認儲存到localStorage中) { storage: window.sessionStorage } )] })
以上這篇解決vuex數(shù)據(jù)頁面刷新后初始化操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue關于接口請求數(shù)據(jù)過大導致瀏覽器崩潰的問題
這篇文章主要介紹了vue關于接口請求數(shù)據(jù)過大導致瀏覽器崩潰的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08