解决页面刷新vuex失效(vuex-persistedstate)

参考链接:
https://npmmirror.com/package/vuex-persistedstate
https://blog.csdn.net/qq_54527592/article/details/122378328

解决问题:页面刷新vuex状态丢失

  • 可以手动兼容:存 vuex 的时候手动存入 storage 一份,(刷新时)在 app.vue 中取 storage 中的数据塞进 vuex 中
  • 也可以使用插件,插件会将 vuex 中的数据复制一份进 storage,刷新时也会自动同步到 vuex(插件:vuex-persistedstate

一、插件安装

npm i vuex-persistedstate

二、插件使用

1、store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
import createPersistedState from 'vuex-persistedstate'

// 模块
import user from './modules/user'
import device from './modules/device'

Vue.use(Vuex)

export default new Vuex.Store({
  // 全局的state、mutations、actions、getters
  state: {},
  mutations: {},
  actions: {},
  getters: {},
  // 为兼容已有代码,内部未使用命名空间,使用时不需按照模块
  modules: {
    user,
    device
  },
  plugins: [
    // vuex持久化配置,默认存储在localstorage中
    createPersistedState({
      // 存储数据的键名,默认是vuex
      key: 'vuex',
      // 存储数据中的哪些数据(如果是模块下具体的数据需要加上模块名称,如 user.token)
      paths: ['user', 'device']
    })
  ]
})
2、 store/modules/user.js
export default {
  state () {
    return {
      token: '',
      userInfo: {},
    }
  },
  getters: {
    token(state) {
      return state.token || ''
    },
    userInfo(state) {
      return state.userInfo || {}
    },
  },
  mutations: {
    setToken(state, payload) {
      state.token = payload
    },
    setUserInfo(state, payload) {
      state.userInfo = payload
    },
  },
  actions: {
    setToken({ commit }, payload) {
      commit('setToken', payload)
    },
    setUserInfo({ commit }, payload) {
      commit('setUserInfo', payload)
    }
  }
}

然后正常使用vuex即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值