色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

vuex頁面刷新數(shù)據(jù)丟失解決方法詳解

瀏覽:4日期:2022-06-12 16:49:45
目錄原因解決思路代碼如下原因

在vue項(xiàng)目中用vuex來做全局的狀態(tài)管理, 發(fā)現(xiàn)當(dāng)刷新網(wǎng)頁后,保存在vuex實(shí)例store里的數(shù)據(jù)會(huì)丟失。

因?yàn)閟tore里的數(shù)據(jù)是保存在運(yùn)行內(nèi)存中的,當(dāng)頁面刷新時(shí),頁面會(huì)重新加載vue實(shí)例,store里面的數(shù)據(jù)就會(huì)被重新賦值初始化

解決思路

將state的數(shù)據(jù)保存在localstorage、sessionstorage或cookie中(三者的區(qū)別),這樣即可保證頁面刷新數(shù)據(jù)不丟失且易于讀取。

localStorage: localStorage的生命周期是永久的,關(guān)閉頁面或?yàn)g覽器之后localStorage中的數(shù)據(jù)也不會(huì)消失。localStorage除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)永遠(yuǎn)不會(huì)消失。sessionStorage:sessionStorage的生命周期是在僅在當(dāng)前會(huì)話下有效。sessionStorage引入了一個(gè)“瀏覽器窗口”的概念,sessionStorage是在同源的窗口中始終存在的數(shù)據(jù)。只要這個(gè)瀏覽器窗口沒有關(guān)閉,即使刷新頁面或者進(jìn)入同源另一個(gè)頁面,數(shù)據(jù)依然存在。但是sessionStorage在關(guān)閉了瀏覽器窗口后就會(huì)被銷毀。同時(shí)獨(dú)立的打開同一個(gè)窗口同一個(gè)頁面,sessionStorage也是不一樣的。cookie:cookie生命期為只在設(shè)置的cookie過期時(shí)間之前一直有效,即使窗口或?yàn)g覽器關(guān)閉。 存放數(shù)據(jù)大小為4K左右,有個(gè)數(shù)限制(各瀏覽器不同),一般不能超過20個(gè)。缺點(diǎn)是不能儲(chǔ)存大數(shù)據(jù)且不易讀取。

由于vue是單頁面應(yīng)用,操作都是在一個(gè)頁面跳轉(zhuǎn)路由,因此sessionStorage較為合適,原因如下:

sessionStorage可以保證打開頁面時(shí)sessionStorage的數(shù)據(jù)為空;每次打開頁面localStorage存儲(chǔ)著上一次打開頁面的數(shù)據(jù),因此需要清空之前的數(shù)據(jù)。

vuex中state數(shù)據(jù)的修改必須通過mutation方法進(jìn)行修改,因此mutation修改state的同時(shí)需要修改sessionstorage,問題倒是可以解決但是感覺很麻煩,state中有很多數(shù)據(jù),很多mutation修改state就要很多次sessionstorage進(jìn)行修改,既然如此直接用sessionstorage解決不就行了,為何還要用vuex多此一舉呢?vuex的數(shù)據(jù)在每次頁面刷新時(shí)丟失,是否可以在頁面刷新前再將數(shù)據(jù)存儲(chǔ)到sessionstorage中呢,是可以的,beforeunload事件可以在頁面刷新前觸發(fā),但是在每個(gè)頁面中監(jiān)聽beforeunload事件感覺也不太合適,那么最好的監(jiān)聽該事件的地方就在app.vue中。

在app.vue的created方法中讀取sessionstorage中的數(shù)據(jù)存儲(chǔ)在store中,此時(shí)用vuex.store的replaceState方法,替換store的根狀態(tài)在beforeunload方法中將store.state存儲(chǔ)到sessionstorage中。代碼如下export default { name: 'App', created () { //在頁面加載時(shí)讀取sessionStorage里的狀態(tài)信息 if (sessionStorage.getItem('store') ) {this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem('store')))) } //在頁面刷新時(shí)將vuex里的信息保存到sessionStorage里 window.addEventListener('beforeunload',()=>{sessionStorage.setItem('store',JSON.stringify(this.$store.state)) }) }}

以上就是vuex頁面刷新數(shù)據(jù)丟失解決方法詳解的詳細(xì)內(nèi)容,更多關(guān)于vuex頁面刷新數(shù)據(jù)丟失解決的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
主站蜘蛛池模板: a级特黄毛片免费观看 | 91精品国产综合成人 | 日韩精品久久久毛片一区二区 | 中国老太性色xxxxxhd | 波多野结衣视频免费观看 | 亚洲欧美日韩久久一区 | 97国产成人精品视频 | 久久精品国产6699国产精 | 国产在线91精品天天更新 | 免费在线看黄网址 | 成人毛片免费视频播放 | 久久精品视频大全 | 成人α片 | 亚洲 欧美 日韩中文字幕一区二区 | 久久精品国产一区二区 | 中文字幕一区二区小泽玛利亚 | 一级毛片视频 | 91精品国产免费久久久久久青草 | 国产视频久久久 | 男女男精品视频在线播放 | 日产一区两区三区四区 | 中国一级毛片视频 | 欧美亚洲国产日韩一区二区三区 | 在线播放国产视频 | 成人免费毛片网站 | 美女张开腿让我桶 | 亚洲国产一区二区三区最新 | 欧美色老头oldvideos | 欧美午夜在线播放 | 一极毛片 | 久久频这里精品香蕉久久 | 日本理论在线播放 | 欧美久久久久 | 亚洲综合久久久 | 婷婷尹人香蕉久久天堂 | 欧美另类亚洲一区二区 | 美女被男人桶到嗷嗷叫爽网站 | 老司机午夜在线视频免费观 | 另类综合视频 | 亚洲在线免费免费观看视频 | 欧美日韩a∨毛片一区 |