vuex 狀態保持
阿新 • • 發佈:2021-01-10
在開發 vue 專案的時候經常會用到 vuex 這個工具,它專門用於元件通訊及狀態儲存等。但是在使用 vuex 的過程中也發現了一些不可避免的槽點,那就是狀態保持。
通常當用戶點選重新整理或按下F5的時候那麼通過 vuex 儲存的資料將會在頁面再次載入完畢之後丟失,如果此時頁面上顯示的內容依賴於 vuex 中的資料,那麼相應內容將會載入不出來。為了解決這個問題今天給大家安利一個非常好用的關於 vuex 狀態保持的外掛——vuex-persist
它的實現原理是將資料備份到本地的localStorage、sessionStorage 或cookie 中,再在重新整理頁面之後從本地儲存中取回資料,以此實現了狀態保持這一功能。廢話不多說,接下來向大家介紹它的具體使用方法。
安裝依賴:
1 // npm 2 npm install --save vuex-persist 3 // yarn 4 yarn add vuex-persist
安裝成功後在store/index.js 檔案中進行如下配置:
引入外掛:
1 // 引入 vuex-persist 2 import VuexPersistence from 'vuex-persist'
建立物件:
1 const vuexLocal = new VuexPersistence({ 2 storage: window.sessionStorage 3 })
在 vuex 中引入
1 export defaultnew Vuex.Store({ 2 state: { ... }, 3 mutations: { ... }, 4 actions: { ... }, 5 plugins: [vuexLocal.plugin] 6 })
完成以上操作後便實現了 vuex 持久化儲存,即使重新整理頁面也不會造成資料丟失了。下面是關於vuex-persist 屬性的一些介紹
屬性 | type | 描述 |
key | string | 狀態儲存在storage中的鍵,預設值為:vuex |
storage | Storage (Web API) | 備份時使用的本地儲存型別,如:localStorage、sessionStorage 或cookie,預設值為:localStorage |
saveState | function (key, state[, storage]) | 如果不使用儲存,這個自定義函式將儲存狀態儲存為永續性 |
restoreState | function (key[, storage]) => state | 如果不使用儲存,這個自定義函式處理從儲存中檢索狀態 |
reducer | function (state) => object | 自定義需要持久化的state,如不配置,則預設對整個 vuex 內的模組進行持久化 |
傳送門:https://github.com/championswimmer/vuex-persist