在vue專案中用vuex來做全域性的狀態管理, 發現當重新整理網頁後,儲存在vuex例項store裡的資料會丟失。
原因:
解決思路:
將state的資料儲存在localstorage、sessionstorage或cookie中(三者的區別),這樣即可保證頁面重新整理資料不丟失且易於讀取。
localstorage: localstorage的生命週期是永久的,關閉頁面或瀏覽器之後localstorage中的資料也不會消失。localstorage除非主動刪除資料,否則資料永遠不會消失。
sessionstorage:sessionstorage的生命週期是在僅在當前會話下有效。sessionstorage引入了乙個「瀏覽器視窗」的概念,sessionstorage是在同源的視窗中始終存在的資料。只要這個瀏覽器視窗沒有關閉,即使重新整理頁面或者進入同源另乙個頁面,資料依然存在。但是sessionstorage在關閉了瀏覽器視窗後就會被銷毀。同時獨立的開啟同乙個視窗同乙個頁面,sessionstorage也是不一樣的。
cookie:cookie生命期為只在設定的cookie過期時間之前一直有效,即使視窗或瀏覽器關閉。 存放資料大小為4k左右,有個數限制(各瀏覽器不同),一般不能超過20個。缺點是不能儲存大資料且不易讀取。
由於vue是單頁面應用,操作都是在乙個頁面跳轉路由,因此sessionstorage較為合適,原因如下:
sessionstorage可以保證開啟頁面時sessionstorage的資料為空;
每次開啟頁面localstorage儲存著上一次開啟頁面的資料,因此需要清空之前的資料。
在beforeunload方法中將store.state儲存到sessionstorage中。
**如下:
export default, this.$store.state,json.parse(sessionstorage.getitem("
store
"))))
} //在頁面重新整理時將vuex裡的資訊儲存到sessionstorage裡
window.addeventlistener("
beforeunload
",()=>)
}}
解決vuex頁面重新整理資料丟失
在vue中使用vuex做狀態管理,當重新整理頁面時,發現state裡面的資料丟失,這是因為當頁面重新整理時,store裡面的資料就會重新賦值初始化。解決 將state裡面的資料儲存在本地儲存中,這樣在重新整理頁面時就可以直接從本地儲存拿 1.選擇合適的儲存客戶端 localstorage是永久儲存在...
vuex頁面資料丟失 解決vuex重新整理頁面資料丟失
1 前言 vue構建的專案中,vuex的狀態儲存是響應式的,當vue元件從store中讀取狀態的時候,若store中的狀態發生變化,那麼相應的元件也會得到高效重新整理,問題來了,vuex儲存的資料只是在頁面中,相當於我們定義的全域性變數,重新整理之後,裡面的資料就會恢復到初始化的狀態。比如,使用者已...
解決 重新整理頁面Vuex資料丟失
vue將資料存入vuex裡面,在進行頁面重新整理的時候,資料丟失,這裡有兩個解決辦法應對不同場景 假如你的路由跳了3層以上,而且這幾個頁面都要用同乙個資料roomid,肯定想到路由傳參的方式傳roomid,那麼問題來了 解決方法 初始化得到roomid後,存入sessionstorge vuex裡面...