VueX瀏覽器刷新如何實(shí)現(xiàn)保存數(shù)據(jù)
VueX瀏覽器刷新保存數(shù)據(jù)
在vue項(xiàng)目中用vuex來(lái)做全局的狀態(tài)管理, 發(fā)現(xiàn)當(dāng)刷新網(wǎng)頁(yè)后,保存在vuex實(shí)例store里的數(shù)據(jù)會(huì)丟失。
原因:
因?yàn)楫?dāng)頁(yè)面刷新時(shí),頁(yè)面會(huì)重新加載vue實(shí)例,store里面的數(shù)據(jù)就會(huì)被重新賦值初始化
方法一
在 App.vue 的 created 鉤子函數(shù)里寫下了如下代碼;
//在頁(yè)面加載時(shí)讀取localStorage里的狀態(tài)信息 localStorage.getItem("userMsg") && this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(localStorage.getItem("userMsg")))); //在頁(yè)面刷新時(shí)將vuex里的信息保存到localStorage里 window.addEventListener("beforeunload",()=>{ localStorage.setItem("userMsg",JSON.stringify(this.$store.state)) })
方法二
router/router.js 下
setItem()
刷新getItem()
刷新瀏覽器后,Vuex的數(shù)據(jù)丟失,如何解決?
在vue項(xiàng)目中用vuex來(lái)做全局的狀態(tài)管理, 發(fā)現(xiàn)當(dāng)刷新網(wǎng)頁(yè)后,保存在vuex實(shí)例store里的數(shù)據(jù)會(huì)丟失。
因?yàn)?store 里的數(shù)據(jù)是保存在運(yùn)行內(nèi)存中的,當(dāng)頁(yè)面刷新時(shí),頁(yè)面會(huì)重新加載vue實(shí)例,store里面的數(shù)據(jù)就會(huì)被重新賦值初始化。
解決方法
使用vuex-along
vuex-along 的實(shí)質(zhì)是將 vuex 中的數(shù)據(jù)存放到 localStorage 或者 sessionStroage 中。
安裝vuex-along
npm install vuex-along --save
配置 vuex-along: 在 store/index.js 中最后添加以下代碼:
import VueXAlong from 'vuex-along' //導(dǎo)入插件 export default new Vuex.Store({ ? ? //modules: { ? ? ? ? //controler ?//模塊化vuex ? ? //}, ? ? plugins: [VueXAlong({ ? ? ? ? name: 'store', ? ? //存放在localStroage或者sessionStroage 中的名字 ? ? ? ? local: false, ? ? ?//是否存放在local中 ?false 不存放 如果存放按照下面session的配置 ? ? ? ? session: { list: [], isFilter: true } //如果值不為false 那么可以傳遞對(duì)象 其中 當(dāng)isFilter設(shè)置為true時(shí), list 數(shù)組中的值就會(huì)被過(guò)濾調(diào),這些值不會(huì)存放在seesion或者local中 ? ? })] });
使用localStorage 或者 sessionStroage
created() { ? ? //在頁(yè)面加載時(shí)讀取sessionStorage里的狀態(tài)信息 ? ? if (sessionStorage.getItem("store")) { ? ? ? this.$store.replaceState( ? ? ? ? Object.assign( ? ? ? ? ? {}, ? ? ? ? ? this.$store.state, ? ? ? ? ? JSON.parse(sessionStorage.getItem("store")) ? ? ? ? ) ? ? ? ); ? ? } ? ? //在頁(yè)面刷新時(shí)將vuex里的信息保存到sessionStorage里 ? ? window.addEventListener("beforeunload", () => { ? ? ? sessionStorage.setItem("store", JSON.stringify(this.$store.state)); ? ? }); },
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue實(shí)現(xiàn)鼠標(biāo)懸浮切換圖片src
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)鼠標(biāo)懸浮切換圖片src,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03腳手架(vue-cli)創(chuàng)建Vue項(xiàng)目的超詳細(xì)過(guò)程記錄
用vue-cli腳手架可以快速的構(gòu)建出一個(gè)前端vue框架的項(xiàng)目結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于腳手架(vue-cli)創(chuàng)建Vue項(xiàng)目的超詳細(xì)過(guò)程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05解決vue項(xiàng)目路徑不正確,自動(dòng)跳轉(zhuǎn)404的問(wèn)題
這篇文章主要介紹了解決vue項(xiàng)目路徑不正確,自動(dòng)跳轉(zhuǎn)404的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10element ui el-date-picker組件默認(rèn)值方式
這篇文章主要介紹了element ui el-date-picker組件默認(rèn)值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12