vuex 聯動 sessionStorage 對數據進行持續存儲,防止用戶手動刷新頁面導致vuex數據丟失,頁面出錯問題
1. 該方法利用vuex的plugins屬性實現,直接放代碼,( sessionStorage.setItem 可以把數據加密下,取值的時候也需要解密)
1 const sessionStoragePlugin = store => { 2 store.subscribe((mutation, state) => { 3 Object.keys(state).forEach((item, index) => { 4 // sessionStorage.setItem 可以把數據加密下,取值的時候也需要解密 5 window.sessionStorage.setItem(item, JSON.stringify(state[item])) 6 }) 7 }) 8 } 9 10 export default sessionStoragePlugin
2. 狀態初始化
1 let vuxdata = null 2 try { 3 // 如果session加密了這里取值需要解密 4 vuxdata = JSON.parse(sessionStorage.getItem('vuxdata')) || {} 5 } catch (error) { 6 vuxdata = {} 7 } 8 const state = { 9 one: vuxdata.one || null 10 } 11 12 export default { 13 state, 14 }
3. 將上面暴露出去的東西放在vuex 的plugin 里面就好了
1 import Vue from 'vue' 2 3 import Vuex from 'vuex' 4 5 import sessionStoragePlugin from './sessionStoragePlugin' 6 7 import vuexdata from './vuexdata.js' 8 9 Vue.use(Vuex) 10 11 export default new Vuex.Store({ 12 modules: { 13 vuexdata, 14 }, 15 // strict: process.env.NODE_ENV !== 'production', 16 plugins: [sessionStoragePlugin] 17 })
以上