頁面刷新 vuex 數據重新被初始化


1、原因

vuex里用來存儲的也只是一個全局變量,當頁面刷新,該全局變量自然不存在了。

2、解決

使用localStorage存儲一份

(1)storage.js

/** * vuex localStorage plugin */ const IS_ALL = 0 export default function storagePlugin({ namespace = 'mfg-vux-', storage = localStorage, persistence = [] } = {}) { let serialize = JSON.stringify, deserialize = JSON.parse, isAll = persistence.length === IS_ALL /** * 獲取持久化的state * @param {[type]} state [description] * @return {[type]} [description] */
  function getState(state) { let data = {}, keys = isAll ? Object.keys(state) : persistence, i = 0, len = keys.length for (; i < len; i++) { let key = keys[i], value = deserialize(storage.getItem(namespace + key)) data[key] = value === null ? state[key] : value } return data } /** * 持久化state * @param {[type]} state [description] */
  function setState(state) { let keys = isAll ? Object.keys(state) : persistence, i = 0, len = keys.length for (; i < len; i++) { let key = keys[i] storage.setItem(namespace + key, serialize(state[key])) } } return store => { let state = store.state // 初始化state
 store.replaceState( _.merge( {}, state, getState(state) ) ) // 持久化state
    store.subscribe((mutation, state) => { setState(state) }) } }

(2)vuex部分代碼

import storage from './plugins/storage' export default new Vuex.Store({ state, mutations, getters, actions, plugins: [storage({ // 要保存的變量
    persistence: ['testText'] })], strict: process.env.NODE_ENV !== 'production' })

變量在localestorage中被保存了:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM