解決頁面刷新备闲,vuex的數(shù)據(jù)丟失

???? Vuex是一個專為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式,采用集中式管理存儲管理應(yīng)用的所有組件的狀態(tài)捅暴。但是當(dāng)刷新頁面的時候恬砂,保存在Vuex實(shí)例store的數(shù)據(jù)會丟失。

????原因就是:

因?yàn)?code>store里的數(shù)據(jù)是保存在運(yùn)行內(nèi)存中蓬痒,當(dāng)頁面刷新時泻骤,頁面會重新加載Vue實(shí)例,store里面的數(shù)據(jù)就會被重新賦值初始化梧奢。

????解決方法:
方法一:

state的數(shù)據(jù)保存在localstorage,sessionstoragecookie中狱掂。

  • 在頁面刷新前將數(shù)據(jù)存儲到sessionstorage中,使用beforeunload事件亲轨,該事件在頁面刷新前觸發(fā):

    • 在app.vue的created方法中讀取sessionstorage中的數(shù)據(jù)存儲在store中趋惨,此時用vuex.store.replaceState方法,替換store的根狀態(tài)
    • 在beforeunload方法中將store.state存儲到sessionstorage中瓶埋。
      代碼如下:
export default {
  name: 'App',
  created () {
    //在頁面加載時讀取sessionStorage里的狀態(tài)信息
    if (sessionStorage.getItem("state") ) {
        this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem("state"))))
    } 

    //在頁面刷新時將vuex里的信息保存到sessionStorage里
    window.addEventListener("beforeunload",()=>{
        sessionStorage.setItem("state",JSON.stringify(this.$store.state))
    })
  }

localStorage,sessionStorage,cookie三者的區(qū)別:

  • localStoragelocalStorage的生命周期是永久的希柿,關(guān)閉頁面或?yàn)g覽器之后localStorage中的數(shù)據(jù)也不會消失。localStorage除非主動刪除數(shù)據(jù)养筒,否則數(shù)據(jù)永遠(yuǎn)不會消失曾撤。
  • sessionStoragesessionStorage的生命周期是在僅在當(dāng)前會話下有效。sessionStorage引入了一個“瀏覽器窗口”的概念晕粪,sessionStorage是在同源的窗口中始終存在的數(shù)據(jù)挤悉。只要這個瀏覽器窗口沒有關(guān)閉,即使刷新頁面或者進(jìn)入同源另一個頁面巫湘,數(shù)據(jù)依然存在装悲。但是sessionStorage在關(guān)閉了瀏覽器窗口后就會被銷毀昏鹃。同時獨(dú)立的打開同一個窗口同一個頁面,sessionStorage也是不一樣的诀诊。
  • cookiecookie生命期為只在設(shè)置的cookie過期時間之前一直有效洞渤,即使窗口或?yàn)g覽器關(guān)閉属瓣。 存放數(shù)據(jù)大小為4K左右,有個數(shù)限制(各瀏覽器不同)护昧,一般不能超過20個。缺點(diǎn)是不能儲存大數(shù)據(jù)且不易讀取绽榛。
方法二:

????使用vuex-persistedstate,可以自動存儲。

  • 下載:
npm install --save vuex-persistedstate
  • 使用
在store.js中引入
import createPersistedState from 'vuex-persistedstate'

export default new Vuex.Store({

  //配置
  plugins: [createPersistedState()]
})

默認(rèn)的是存儲到localStorage里的美莫,我們也可以存到sessionStorage中厢呵,如:

import createPersistedState from 'vuex-persistedstate'

export default new Vuex.Store({

  //配置
  plugins: [createPersistedState({
   storage: window.sessionStorage
  })]
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市赐劣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盖呼,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墙贱,死亡現(xiàn)場離奇詭異伊脓,居然都是意外死亡报腔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門碰煌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绅作,“玉大人芦圾,你說我怎么就攤上這事《砣希” “怎么了个少?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長眯杏。 經(jīng)常有香客問我夜焦,道長,這世上最難降的妖魔是什么役拴? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任糊探,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘科平。我一直安慰自己褥紫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布瞪慧。 她就那樣靜靜地躺著髓考,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弃酌。 梳的紋絲不亂的頭發(fā)上氨菇,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機(jī)與錄音妓湘,去河邊找鬼查蓉。 笑死,一個胖子當(dāng)著我的面吹牛榜贴,可吹牛的內(nèi)容都是我干的豌研。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼唬党,長吁一口氣:“原來是場噩夢啊……” “哼鹃共!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驶拱,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤霜浴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蓝纲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阴孟,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年驻龟,在試婚紗的時候發(fā)現(xiàn)自己被綠了温眉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡翁狐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凌蔬,到底是詐尸還是另有隱情露懒,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布砂心,位于F島的核電站懈词,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辩诞。R本人自食惡果不足惜坎弯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抠忘,春花似錦撩炊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至囚灼,卻和暖如春骆膝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背灶体。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工阅签, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蝎抽。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓政钟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親织中。 傳聞我的和親對象是個殘疾皇子锥涕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360