使用sessionStorage解決vuex在頁面刷新后數(shù)據(jù)被清除的問題
1.原因
2.解決方法
localStorage沒有時(shí)間期限,除非將它移除,sessionStorage即會(huì)話,當(dāng)瀏覽器關(guān)閉時(shí)會(huì)話結(jié)束,有時(shí)間期限,具有自行百度
我這里使用sessionStorage,這里需要注意的是vuex中的變量是響應(yīng)式的,而sessionStorage不是,當(dāng)你改變vuex中的狀態(tài),組件會(huì)檢測到改變,而sessionStorage就不會(huì)了,頁面要重新刷新才可以看到改變,所以應(yīng)讓vuex中的狀態(tài)從sessionStorage中得到,這樣組件就可以響應(yīng)式的變化
3.具體實(shí)現(xiàn)
應(yīng)用背景是用戶登入后保存狀態(tài),退出后移除狀態(tài)
mutations.js
ADD_LOGIN_USER (state,data) { //登入,保存狀態(tài) sessionStorage.setItem("username", data); //添加到sessionStorage sessionStorage.setItem("isLogin",true); state.username=data, //同步的改變store中的狀態(tài) state.isLogin=true }, SIGN_OUT (state) { //退出,刪除狀態(tài) sessionStorage.removeItem("username"); //移除sessionStorage sessionStorage.removeItem("isLogin"); state.username='' //同步的改變story中的狀態(tài) state.isLogin=false }
getters.js
isLogin (state) { if (!state.isLogin) { state.isLogin=sessionStorage.getItem('isLogin'); //從sessionStorage中讀取狀態(tài) state.username=sessionStorage.getItem('username'); } return state.username }
總體的實(shí)現(xiàn)思路是讓vuex中story的狀態(tài)和sessionStorage保持一致(從sessionStorage取值)
4.后話
之前踩了一個(gè)大坑,沒注意到vuex可以讓組件響應(yīng)式變化,讓組件直接取了sessionStorage的值,弄的我還必須刷新才能看到退出后的效果。
補(bǔ)充:
下面看戲vuex存儲(chǔ)和本地存儲(chǔ)(localstorage、sessionstorage)的區(qū)別
1.最重要的區(qū)別:vuex存儲(chǔ)在內(nèi)存,localstorage則以文件的方式存儲(chǔ)在本地
2.應(yīng)用場景:vuex用于組件之間的傳值,localstorage則主要用于不同頁面之間的傳值。
3.永久性:當(dāng)刷新頁面時(shí)vuex存儲(chǔ)的值會(huì)丟失,localstorage不會(huì)。
注:很多同學(xué)覺得用localstorage可以代替vuex, 對(duì)于不變的數(shù)據(jù)確實(shí)可以,但是當(dāng)兩個(gè)組件共用一個(gè)數(shù)據(jù)源(對(duì)象或數(shù)組)時(shí),如果其中一個(gè)組件改變了該數(shù)據(jù)源,希望另一個(gè)組件響應(yīng)該變化時(shí),localstorage無法做到,原因就是區(qū)別1。
總結(jié)
以上所述是小編給大家介紹的vuex在頁面刷新后數(shù)據(jù)被清除問題的解決方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 解決vue this.$forceUpdate() 處理頁面刷新問題(v-for循環(huán)值刷新等)
- Vue監(jiān)聽頁面刷新和關(guān)閉功能
- vue通過路由實(shí)現(xiàn)頁面刷新的方法
- vue緩存的keepalive頁面刷新數(shù)據(jù)的方法
- vue router帶參數(shù)頁面刷新或回退參數(shù)消失的解決方法
- vue單頁面實(shí)現(xiàn)當(dāng)前頁面刷新或跳轉(zhuǎn)時(shí)提示保存
- vue 動(dòng)態(tài)添加的路由頁面刷新時(shí)失效的原因及解決方案
- Vue頁面刷新記住頁面狀態(tài)的實(shí)現(xiàn)
- vue路由傳參頁面刷新參數(shù)丟失問題解決方案
- vue實(shí)現(xiàn)頁面刷新動(dòng)畫
相關(guān)文章
如何利用VUE監(jiān)聽網(wǎng)頁關(guān)閉并執(zhí)行退出操作
這篇文章主要給大家介紹了關(guān)于如何利用VUE監(jiān)聽網(wǎng)頁關(guān)閉并執(zhí)行退出操作的相關(guān)資料,因?yàn)轫?xiàng)目中需求,瀏覽器關(guān)閉時(shí)進(jìn)行一些操作處理,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08vue + element ui實(shí)現(xiàn)播放器功能的實(shí)例代碼
這篇文章主要介紹了vue + element ui實(shí)現(xiàn)播放器功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04vue項(xiàng)目設(shè)置scrollTop不起作用(總結(jié))
這篇文章主要介紹了vue項(xiàng)目設(shè)置scrollTop不起作用(總結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12淺談Vue網(wǎng)絡(luò)請(qǐng)求之interceptors實(shí)際應(yīng)用
這篇文章主要介紹了淺談Vue網(wǎng)絡(luò)請(qǐng)求之interceptors實(shí)際應(yīng)用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02詳解Vue如何實(shí)現(xiàn)響應(yīng)式布局
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)響應(yīng)式布局的兩種方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起了解一下2023-12-12關(guān)于Vue的 watch、computed和methods的區(qū)別匯總
這篇文章主要介紹關(guān)于Vue的 watch、computed和methods的區(qū)別,下面文章將圍繞Vue的 watch、computed和methods的續(xù)航管資料展開全文它們之間區(qū)別的內(nèi)容,需要的朋友可以參考一下,希望能幫助到大家2021-11-11vue組件實(shí)現(xiàn)列表自動(dòng)無限循環(huán)的方法
最近剛好有個(gè)功能需要實(shí)現(xiàn)列表的無限循環(huán)滾動(dòng),這篇文章主要給大家介紹了關(guān)于vue組件實(shí)現(xiàn)列表自動(dòng)無限循環(huán)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11