vuex的主要作用是組件之間的通信以及對數據進行中心化管理。
但是由於vuex中的數據是存在運行內存中的,所以當我們刷新頁面的時候會導致store中的數據清空。
怎么解決這個問題呢?
我們可以使用傳統的存儲方式將store中的數據存起來,比如cookie、localstorage或者sessionstorage,這樣刷新頁面數據也不會丟失了。
只是為了保留瀏覽器刷新前的數據,所以我們選用sessionstorage,這樣關閉瀏覽器,存儲的數據就會被清空,不會產生重復數據。
具體實現思路是這樣的,我們監聽頁面刷新事件,在刷新前將store中的數據存儲到sessionstorge中。每次進入頁面的時候先讀取sessionstorage中的值並把它賦給store,這樣就保留了刷新前的數據。
export default { name: 'App', created () { if (sessionStorage.getItem("store") ) { //頁面加載前讀取sessionStorage里的狀態信息 this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem("store")))) } window.addEventListener("beforeunload",()=>{ //在頁面刷新前將vuex里的信息保存到sessionStorage里 sessionStorage.setItem("store",JSON.stringify(this.$store.state)) }) } }
參考鏈接:https://blog.csdn.net/guzhao593/article/details/81435342
