眾所周知,vuex的一個(gè)全局狀態(tài)管理的插件,但是在瀏覽器刷新的時(shí)候,內(nèi)存中的state會(huì)釋放,通常的解決辦法就是用本地存儲(chǔ)的方式保存數(shù)據(jù),然后再vuex初始化的時(shí)候再賦值給state,手動(dòng)存再手動(dòng)取會(huì)覺(jué)得很麻煩,這個(gè)時(shí)候就可以使用vuex的插件vuex-solidification
插件地址: vuex-solidification , 歡迎star
插件原理
vuex有一個(gè)hook方法:store.subscribe((mutation, state) => {}) 每次在mutation方法執(zhí)行完之后都會(huì)調(diào)用這個(gè)回調(diào)函數(shù),返回執(zhí)行完畢之后的state
使用方法
安裝
npm install --save vuex-solidification
引入及配置
import Vue from 'vue'import Vuex from 'vuex'import count from './count/index.js';import createPersistedState from 'vuex-solidification';Vue.use(Vuex);const store = new Vuex.Store({ state: { count: { value: 0, num: 1 }, pos: 1 } plugins: [ // 默認(rèn)存儲(chǔ)所有state數(shù)據(jù)到localstorage createPersistedState() ]});
插件參數(shù)說(shuō)明
createPersistedState({options}) : Function
options里面可以有:
key: String 存儲(chǔ)到localStorage, sessionStorage 中對(duì)象的key,默認(rèn)為vuex
local: Object 和 session: Object, 分別代表localStorage的配置和sessionStorage的配置
local 和 session 里面可以有: include: Array 和 exclude: Array
配置例子
createPersistedState({ local: { include: ['count.value'] }})/* hook鉤子觸發(fā)之后,localstorage里面存儲(chǔ)的對(duì)象為: { count: { value: 0, } }*/createPersistedState({ local: { exclude: ['count.value'] }})/* hook鉤子觸發(fā)之后,localstorage里面存儲(chǔ)的對(duì)象為: { count: { num: 1 }, pos: 1 }*/createPersistedState({ session: { include: ['count.value'] }})/* hook鉤子觸發(fā)之后,sessionstorage里面存儲(chǔ)的對(duì)象為: { count: { value: 0, } }*/createPersistedState({ session: { exclude: ['count.value'] }})/* hook鉤子觸發(fā)之后,sessionstorage里面存儲(chǔ)的對(duì)象為: { count: { num: 1 }, pos: 1 }*/createPersistedState({ session: { include: ['count'] }, local: { include: ['pos'] }})/* hook鉤子觸發(fā)之后, sessionstorage里面存儲(chǔ)的對(duì)象為: { count: { value: 0, num: 1 }, } sessionstorage里面存儲(chǔ)的對(duì)象為: { pos: 0 }*/
代碼例子
Check out the example on CodeSandbox.
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注