nuxt中刷新頁面后防止store值丟失問題
nuxt刷新頁面后防止store值丟失
配置插件()
plugins: [ {src:'~/plugins/storeCache',ssr: false}, ],
注意:
要禁止服務(wù)端運行,不然會報錯,這個事件是在客戶端添加的,不是在服務(wù)端小渲染的時候添加的。
在plugins/storeCache.js
寫代碼,如下。
export default function(ctx){ //離開頁面 刷新前 將store中的數(shù)據(jù)存到session window.addEventListener('beforeunload', ()=> { sessionStorage.setItem("storeCache",JSON.stringify(ctx.store.state)) }); //頁面加載完成 將session中的store數(shù)據(jù) window.addEventListener('load', ()=> { let storeCache = sessionStorage.getItem("storeCache") if(storeCache){ // 將session中的store數(shù)據(jù)替換到store中 ctx.store.replaceState(JSON.parse(storeCache)); } }); }
大功告成~
nuxt——讓store持久化,刷新頁面不清除store
我們有時候在項目中儲存的store數(shù)據(jù)只要一刷新頁面,數(shù)據(jù)就被清空了,在其他頁面加載的時候就獲取不到數(shù)據(jù)了,但是咱們又沒有辦法控制用戶不允許刷新頁面,所以咱們來解決了它
解決思路
就是利用瀏覽器的本地存儲,localStorage或者sessionStorage,監(jiān)聽頁面要離開或者刷新前,將store儲存到本地,下次進入頁面的時候取出來重新賦值給store就可以了
代碼開發(fā)步驟
如下:
第一步:
我們在plugins文件中建立一個store-cache.js文件,在store-cache.js中添加以下代碼:
export default function(ctx) { ? //離開頁面 刷新前 將store中的數(shù)據(jù)存到localStorage ? window.addEventListener('beforeunload', () => { ? ? localStorage.setItem("storeCache", JSON.stringify(ctx.store.state)) ? }); ? // 獲取localStorage中的store數(shù)據(jù) ? let storeCache = localStorage.getItem("storeCache") ? if (storeCache) { ? ? // 將localStorage中的store數(shù)據(jù)替換到store中 ? ? ctx.store.replaceState(JSON.parse(storeCache)); ? } }
第二步:
在nuxt.cofing.js中的plugins中將剛才創(chuàng)建的store-cache.js添加進去,如下:
plugins: [ ?? ?{src:'~/plugins/store-cache',ssr:false} ],
注意:
在添加的時候ssr一定要設(shè)置成false,ssr的作用是控制該文件是否在服務(wù)器端進行加載,如果設(shè)置為true的話,這個js文件就會在服務(wù)器中直接運行了,但是因為我們的js文件中需要用到windows對象,windows對象只有在客戶端,也就是咱們的瀏覽器中才會存在,直接在服務(wù)器中運行的話,會報錯,因為找不到windows對象,所以我們需要設(shè)置為false,讓該js到了瀏覽器中后再加載運行
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue+elementUi中的table實現(xiàn)跨頁多選功能(示例詳解)
最近在開發(fā)工業(yè)品超市的后臺系統(tǒng),遇到一個需求,就是實現(xiàn)在一個table表格中多選數(shù)據(jù),在網(wǎng)上查了好多,有些方法真的是無語,下面通過本文給大家分享vue+elementUi中的table實現(xiàn)跨頁多選功能,感興趣的朋友跟隨小編一起看看吧2024-05-05快速解決vue動態(tài)綁定多個class的官方實例語法無效的問題
今天小編就為大家分享一篇快速解決vue動態(tài)綁定多個class的官方實例語法無效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09VUE中如何調(diào)用高德地圖獲取當前位置(VUE2.0和3.0通用)
使用uniapp開發(fā)微信小程序時,多多少少會遇到獲取當前位置的詳細信息,下面這篇文章主要給大家介紹了關(guān)于VUE中如何調(diào)用高德地圖獲取當前位置(VUE2.0和3.0通用)的相關(guān)資料,需要的朋友可以參考下2023-04-04vue-cli3在main.js中console.log()會報錯的解決
這篇文章主要介紹了vue-cli3在main.js中console.log()會報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04