【vue2】解决Vuex刷新页面数据丢失的问题

简介: 【vue2】解决Vuex刷新页面数据丢失的问题

最近写vue2 项目需要用到vuex, 但遇到一个问题,存进store里的数据刷新就丢失了,于是乎百度解决。将自己的感受与解决方法记录下来。

数据丢失的原因

vuex存储的数据只是在页面中,相当于全局变量,页面刷新的时候vuex里的数据会重新初始化,导致数据丢失。

因为vuex里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例,vuex里面的数据就会被重新赋值。

解决的思路

将vuex中的数据直接保存到浏览器缓存中(sessionStorage、localStorage、cookie) 页面刷新后再从浏览器中取出

解决方法

利用第三方库进行持久化存储

1.安装 vuex-persistedstate

npm install --save vuex-persistedstate

2.根据情况选择存储位置和方法

(1)在store文件夹下的indedx.js中配置信息,

使用vuex-persistedstate默认存储到localStorage

使用vuex-persistedstate默认存储到localStorage
import createPersistedState from "vuex-persistedstate"
const store =newVuex.Store({
  state: {
    count: 1
  },
  mutations: {},
  actions: {},
  // 当state中的值发生改变,此时localStorage中的vuex的值会同步把state中的所有值存储起来,当页面刷
   新的时候,state的值会从localStorage自动获取vuex的value值,赋值到state中
  plugins: [createPersistedState()] 
})

(2)使用vuex-persistedstate默认存储到sessionStorage

const store = new Vuex.Store({
   state: {},
   mutations: {},
   actions: {},
   plugins: [createPersistedState({
       storage:window.sessionStorage  // 同localStorage相同,只是将vuex的所有值存储到sessionStorage中
   })]
})

(3)指定需要持久化的state

import createPersistedState from "vuex-persistedstate"

const store = newVuex.Store({
 state: {
  count: 0
},
 mutations: {},
 actions: {},
 plugins: [createPersistedState({
   storage:window.sessionStorage,
   reducer(val)  {
         // 此时,当count发生改变的时候,就会调用此函数,并且val的值为当前state对象,return的值为当前本地存储的value值(本地存储的key值为vuex)
         return {
             count: val.count,
         changeCount: 'aaa'
         }
     }
 })]
})

参考文章:解决Vuex刷新页面数据丢失的问题

下班~

目录
相关文章
|
存储 JavaScript 前端开发
Vuex详解:Vue.js的状态管理方案
Vuex详解:Vue.js的状态管理方案
149 1
|
存储 JavaScript
Vue2(状态管理Vuex)
Vue2(状态管理Vuex)
|
7月前
|
缓存 JavaScript
Vue强制页面刷新--vue不留白刷新页面解决办法
Vue强制页面刷新--vue不留白刷新页面解决办法
224 3
|
7月前
|
JavaScript
Vue项目中强制刷新页面的方法
Vue项目中强制刷新页面的方法
119 0
|
2月前
|
存储 缓存 资源调度
Vue3状态管理新选择:Pinia安装与使用详解,以及与Vuex的对比分析
Vue3状态管理新选择:Pinia安装与使用详解,以及与Vuex的对比分析
156 0
|
5月前
|
存储 JavaScript
vuex【解决方案】刷新页面数据丢失(两种方法)—— 含 vuex-along 教程
vuex【解决方案】刷新页面数据丢失(两种方法)—— 含 vuex-along 教程
453 0
|
7月前
|
移动开发 JavaScript 前端开发
vue/react项目刷新页面出现404的原因以及解决办法
vue/react项目刷新页面出现404的原因以及解决办法
741 0
|
7月前
|
JavaScript
Vue状态管理:如何在Vue组件中访问Vuex的状态?
Vue状态管理:如何在Vue组件中访问Vuex的状态?
82 3
|
JavaScript
vue 项目 页面刷新404问题
vue 项目 页面刷新404问题
175 0
vue2之vuex实现数据持久化(vuex-persistedstate)插件
vue2之vuex实现数据持久化(vuex-persistedstate)插件
648 0

热门文章

最新文章