众所周知,vuex的一个全局状态管理的插件,但是在浏览器刷新的时候,内存中的state会释放,通常的解决办法就是用本地存储的方式保存数据,然后再vuex初始化的时候再赋值给state,手动存再手动取会觉得很麻烦,这个时候就可以使用vuex的插件vuex-solidification插件地址: vuex-solidification , 欢迎star插件原理vuex有一个hook方法:store.subscribe((mutation, state) => {}) 每次在mutation方法执行完之后都会调用这个回调函数,返回执行完毕之后的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: [ // 默认存储所有state数据到localstorage createPersistedState() ]});插件参数说明createPersistedState({options}) : Functionoptions里面可以有🔑 String 存储到localStorage, sessionStorage 中对象的key,默认为vuexlocal: Object 和 session: Object, 分别代表localStorage的配置和sessionStorage的配置local 和 session 里面可以有: include: Array 和 exclude: Array配置例子createPersistedState({ local: { include: [‘count.value’] }})/* hook钩子触发之后,localstorage里面存储的对象为: { count: { value: 0, } }/createPersistedState({ local: { exclude: [‘count.value’] }})/ hook钩子触发之后,localstorage里面存储的对象为: { count: { num: 1 }, pos: 1 }/createPersistedState({ session: { include: [‘count.value’] }})/ hook钩子触发之后,sessionstorage里面存储的对象为: { count: { value: 0, } }/createPersistedState({ session: { exclude: [‘count.value’] }})/ hook钩子触发之后,sessionstorage里面存储的对象为: { count: { num: 1 }, pos: 1 }/createPersistedState({ session: { include: [‘count’] }, local: { include: [‘pos’] }})/ hook钩子触发之后, sessionstorage里面存储的对象为: { count: { value: 0, num: 1 }, } sessionstorage里面存储的对象为: { pos: 0 }*/代码例子Check out the example on CodeSandbox.写在最后欢迎交流,提issue和pr,