vuex持久化

方法1:

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

import loginModule from "./login.js"

//导入模块  要安装npm i vuex-persistedstate
import createPersistedstate  from 'vuex-persistedstate'


export default new Vuex.Store({
  state: {
    login:false
  },
  getters: {
  },
  mutations: {
    LOGIN(state,payload){
      state.login=payload
    }
  },
  actions: {
  },
  modules: {
    loginModule
  },
  plugins:[
    createPersistedstate({
      key:'user',// 存数据的key名,一个key存储全部state   自定义的  要有语义化
      storage:window.sessionStorage,//默认local 也可以存session
      // paths: ['loginModule'] // 要把那些模块加入缓存
      reducer(state){  //只存储全局的state
        return{
          a:state.login  
        }
      }
    }) 
  ]

})

方法2:

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

import loginModule from "./login.js"

//安装npm i vue-cookie(也可以用local)
var VueCookie = require('vue-cookie');


export default new Vuex.Store({
  state: {
    login: VueCookie.get('login')? VueCookie.get('login'):false
  },
  getters: {
  },
  mutations: {
    LOGIN(state,payload){
      state.login=payload
      VueCookie.set('login', payload, { expires: '300s' })
    }
  },
  actions: {
  },
  modules: {
    loginModule
  },

})

方法3:

利用 pagehide 事件在用户刷新页面时(或者beforeunload事件再页面刷新前)将vuex的store存入sessionstorage中,然后在页面加载时,从sessionstorage中获取,再利用replaceState写入store

  created() {
    // 在页面加载时读取sessionStorage里的状态信息
    let store = window.sessionStorage.getItem("store");
    if (store !== null) {
      this.$store.replaceState(
        Object.assign({}, this.$store.state, JSON.parse(store))
      );
    }
    // pagehide 解决ios移动端不支持beforeunload,安卓端两个都可以用
    // 在页面刷新时将vuex里的信息保存到sessionStorage里
    window.addEventListener('pagehide', () => {
      sessionStorage.setItem('store', JSON.stringify(this.$store.state));
    });
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vuex持久化是指将Vuex中的状态数据保存到本地存储中,以便在页面刷新或重新加载后能够保持数据的持久性。实现Vuex持久化的方法有多种,以下是其中两种常用的方式: 1. 使用插件:可以使用vuex-persistedstate插件来实现Vuex持久化。首先,你需要安装该插件: ``` npm install vuex-persistedstate ``` 然后,在你的Vuex store文件中引入该插件并使用它: ```javascript import createPersistedState from 'vuex-persistedstate'; const store = new Vuex.Store({ // ...其他配置 plugins: [createPersistedState()] }); ``` 这样配置后,Vuex中的状态数据将会自动保存到本地存储中,并在页面刷新或重新加载后自动恢复。 2. 手动实现:你也可以手动编写代码来实现Vuex持久化。在Vue应用的入口文件中,可以通过监听window对象的beforeunload事件,在页面即将关闭之前将Vuex中的状态数据保存到本地存储中。然后,在Vue应用初始化时,可以通过读取本地存储中的数据来恢复Vuex的状态。具体代码如下: ```javascript // 入口文件 main.js import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const store = new Vuex.Store({ // ...其他配置 }); // 监听页面即将关闭事件 window.addEventListener('beforeunload', () => { localStorage.setItem('vuex_state', JSON.stringify(store.state)); }); // 初始化Vue应用时,从本地存储中读取数据并恢复Vuex状态 const savedState = JSON.parse(localStorage.getItem('vuex_state')); if (savedState) { store.replaceState(savedState); } new Vue({ // ...其他配置 store, }).$mount('#app'); ``` 这样配置后,Vuex中的状态数据将会在页面关闭前保存到本地存储中,并在页面重新加载时从本地存储中读取数据并恢复Vuex状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值