当前位置:首页 > 编程笔记 > 正文
已解决

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

来自网友在路上 159859提问 提问时间:2023-09-27 13:17:49阅读次数: 59

最佳答案 问答题库598位专家为你答疑解惑

最近写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刷新页面数据丢失的问题

下班~

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【vue2】解决Vuex刷新页面数据丢失的问题":http://eshow365.cn/6-14690-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!