文章目录[x]
- 1:1.问题描述
- 2:2.解决思路
- 3:3.使用方法
- 4:4.参考来源
1.问题描述
一般在登录成功的时候需要把用户信息,菜单信息放置vuex中,作为全局的共享数据。但是在页面刷新的时候vuex里的数据会重新初始化,导致数据丢失。因为vuex里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例,vuex里面的数据就会被清空。
2.解决思路
- 将vuex中的数据直接保存到浏览器缓存中(sessionStorage、localStorage、cookie)
- 使用vuex-persistedstate插件,其原理就是将vuex的state存在localStorage或sessionStorage或cookie中一份,刷新页面的一瞬间,vuex数据消失,vuex会去sessionStorage中拿回数据,变相的实现了数据刷新不丢失
3.使用方法
安装:npm install vuex-persistedstate --save
在所在的vuex的index.js文件进行如下配置,需要设置好默认以及各种跳转修改默认值
import createPersistedState from "vuex-persistedstate";//引入插件
export default new Vuex.Store({
//...在最后添加插件
plugins: [
createPersistedState({
storage: window.sessionStorage,//选择存放的位置
reducer(data) {
return {
// 设置需要缓存的数据
menu: data.menu,
//...
};
},
}),
],
});