關于vuex狀態(tài)刷新網(wǎng)頁時數(shù)據(jù)被清空問題及解決
vuex狀態(tài)刷新網(wǎng)頁時數(shù)據(jù)被清空問題
vuex狀態(tài)管理,在網(wǎng)頁刷新數(shù)據(jù)被清空的解決方法。
在main.js中寫入下面的代碼段(親測有效)
//刷新保存狀態(tài)
if (sessionStorage.getItem("store")) {
store.replaceState(
Object.assign(
{},
store.state,
JSON.parse(sessionStorage.getItem("store"))
)
);
sessionStorage.removeItem("store")
}
//監(jiān)聽,在頁面刷新時將vuex里的信息保存到sessionStorage里
window.addEventListener("beforeunload", () => {
sessionStorage.setItem("store", JSON.stringify(store.state));
});vuex狀態(tài)在頁面刷新時,會清空狀態(tài)的解決
store寫入的state在頁面刷新時會被清空,這時可以用sessionStorage緩存狀態(tài)。因為localStorage會永久保存數(shù)據(jù),只有用戶手動清除的時候才會清除。cookie存儲內(nèi)存只有4k,并且始終在同源的http請求中攜帶。而sessionStorage在關閉瀏覽器頁面時就會清空。
因為狀態(tài)只會在刷新頁面的時候清空,所以我們只需要去app.vue里面在頁面刷新之前把store保存在sessionStorage里面。在頁面加載時讀取sessionStorage的值
由于瀏覽器存儲時會自動把對象轉(zhuǎn)換成字符串格式,且不具備轉(zhuǎn)換對象的鍵和值為字符串的效果,只會轉(zhuǎn)換為[object,object]。因此需要先將對象轉(zhuǎn)換為json字符串存儲,取出時再使用JSON.parse()方法轉(zhuǎn)換為json對象。
app.vue
created () {
? ? // 在頁面加載時讀取sessionStorage
? ? if (sessionStorage.getItem('store')) {
? ? ? this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(sessionStorage.getItem('store'))))
? ? }
? ? // 在頁面刷新時將store保存到sessionStorage里
? ? window.addEventListener('beforeunload', () => {
? ? ? sessionStorage.setItem('store', JSON.stringify(this.$store.state))
? ? })
? }以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
利用vue.js把靜態(tài)json綁定bootstrap的table方法
今天小編就為大家分享一篇利用vue.js把靜態(tài)json綁定bootstrap的table方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
vue+element多選級聯(lián)選擇器自定義props使用詳解
這篇文章主要給大家介紹了關于vue+element多選級聯(lián)選擇器自定義props使用的相關資料,級聯(lián)選擇器展示的結(jié)果都是以數(shù)組的形式展示,也就是v-model綁定的結(jié)果,需要的朋友可以參考下2023-07-07

