vuex持久化方案探究

vue.jpeg

背景

用vue開發(fā)中大型應(yīng)用時候,我們通常都會使用vuex進行狀態(tài)管理,但由于vuex是將數(shù)據(jù)以js對象的形勢維護在內(nèi)存中,所以當頁面刷新時候,存在內(nèi)存中的vuex數(shù)據(jù)將會丟失,在很多場景中,我們不愿意看到這樣的結(jié)果的

引出的問題

那么如何實現(xiàn)vuex的持久化,使得他能變得像localStorage,sessionStorag一樣呢?

自己造輪子

大體的思路無非就是將vuex的state存起來,初始化的時候去讀取緩存并注冊vuex,具體可看下面兩種方案:

方案1:編寫vuex插件

vuex提供了插件的功能,我們可以在每次mutation的時候?qū)tate保存下來,存到localStorage,sessionStorage中,然后頁面初始化的時候,讀取存儲的state值,覆蓋state的初始值

方案2:利用beforeunload事件

beforeunload事件可能大家用的不是特別多,他并不是一個新特性,而是一個很老的事件,并且兼容性特別好(IE6都兼容了,你敢信)

WechatIMG112.jpeg

beforeunload事件會在頁面卸載之前執(zhí)。如刷新,返回到其他頁面,關(guān)閉等操作都會觸發(fā)這個事件

這就給我們提供另外一種緩存思路,與其每次mutation時記錄變化,為何不在頁面unload時,一次性把要緩存的state都緩存起來呢,這樣效率不是更高嗎?

基于這個原理,我開發(fā)了一款插件vue-vuex-persist

第三方解決方案

大多數(shù)第三方插件基于vuex插件實現(xiàn)。

社區(qū)也有一些不錯的插件,如vuex-persistedstate

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • vuex狀態(tài)持久化 方案一 前言 我們都知道Vuex是一個狀態(tài)管理器,而他的缺點也很明確,在頁面刷新之后,Vuex...
    慕小牧閱讀 5,394評論 0 1
  • Vuex 概念篇 Vuex 是什么? Vuex 是一個專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式...
    Junting閱讀 3,172評論 0 43
  • ? 秦皇島的夏天來了,木鳥短租的美女房東——文靜,又要忙起來了。 前段時間,她把自家的民宿收拾利索,將酒館的魚肉酒...
    小丸子愛吃魚呀閱讀 470評論 0 3
  • I love you so gahhhhdamn much" and thanking fans for bein...
    淺淺鳶閱讀 205評論 0 1

友情鏈接更多精彩內(nèi)容