我们在使用vue开发网页的时候,大部分情况下都会使用vuex进行状态管理。但是vuex在刷新浏览器后重新加载页面时会重新初始化数据。很多时候我们不想在刷新网页的时候清除一些数据,于是vuex-persist应运而生。(关门过关)importVuexPersistencefrom'vuex-persist'constvuexLocal=newVuexPersistence({//使用localStorage存储:window.localStorage,//如果不指定该函数,默认持久化所有vuex数reducer(val){return{user:val.user//这里只为用户模块持久化数据}}})然后引入conststore={state:{...},mutations:{...},actions:{...},modules:{user,...}plugins:[vuexLocal.plugin]}接下来一点就是vuex-persist的源码是从typeScript转过来的,很多都没有已转换为ES5。所以在低版本的火狐浏览器和ie中可能打不开(被骗了一段时间)。看部分源码://vuex-persist/dist/cjs/index.jsexports.MockStorage=class{getlength(){returnObject.keys(this).length;}...}...flushQueue(){这个._flushing=true;constchain=()=>{constnextTask=this._queue.shift();如果(nextTask){返回nextTask.then(链);}else{this._flushing=false;}};returnPromise.resolve(chain());}可以看到classconst箭头函数等还没有进行ES6到ES5的转换在webpack中使用babel-loader处理vuex-persistwebpack.config.jsmodule.exports={输入:{...},输出:{...},模块:{规则:[{测试:/\.js$/,加载器:'babel-loader',包括:[...resolve('node_modules/vuex-persist/dist')]}]}}OK,又是一个很难解决的问题。vuex-persist的原始代码不多,有空可以研究一下。
