vuex-persistedstate使用 设置vuex数据持久化

 store->index.js

import { createStore } from 'vuex'
import getters from './getters'
import createPersistedState from 'vuex-persistedstate'
import SecureLS from 'secure-ls'
// 获取modules下的js文件
const modulesFiles = require.context('./modules', true, /\.js$/)

const modules = modulesFiles.keys().reduce((modules, modulePath) => {
  // set './app.js' => 'app'
  const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
  const value = modulesFiles(modulePath)
  modules[moduleName] = value.default
  return modules
}, {})

/**
 * @description 设置vuex数据持久化,默认储存全部数据,通过配置参数储存所需要的数据;通过SecureLS进行加密
 */
const ls = new SecureLS({ isCompression: false })
const vuexPersisted = createPersistedState({
  storage: { // 自定义storage储存方法
    getItem: key => ls.get(key),
    setItem: (key, value) => ls.set(key, value),
    removeItem: key => ls.remove(key)
    // getItem: key => sessionStorage.getItem(key),
    // setItem: (key, value) => sessionStorage.setItem(key, value),
    // removeItem: key => sessionStorage.removeItem(key)
  },
  // paths: ['user'], // 配置储存模块,注意:1.不能添加permission模块,否则动态添加路由会出错!!!2.不能与reducer同时存在
  /**
   * @description 配置需要持久化的数据
   */
  reducer (state) {
    return {
      user: {
        userInfo: state.user.userInfo
      },
      permission: {
        routes: state.permission.routes,
        menuRoutes: state.permission.menuRoutes,
        menuType: state.permission.menuType
      }
    }
  }
})

export default createStore({
  getters,
  modules,
  plugins: [vuexPersisted]
})
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值