Vue刷新页面数据重置?一招解决Vuex状态丢失

Vue刷新页面数据重置?一招解决Vuex状态丢失

开发Vue项目时,一直被一个小问题困扰:页面跳转正常,只要刷新页面,Vuex里的用户信息、筛选条件就全部清空。

排查后发现不是代码bug,是Vuex的底层机制问题:Vuex数据仅存在内存中,页面刷新会销毁进程,数据直接重置。

分享一个项目实测最简单、最稳妥的解决办法,无需重复请求接口,一步实现状态持久化。

一、安装持久化插件

bash 复制代码
npm install vuex-persistedstate --save

二、Store核心配置(直接复用)

在 store/index.js 引入并配置,自动将Vuex数据缓存到本地:

javascript 复制代码
import Vue from 'vue'
import Vuex from 'vuex'
import persistedState from 'vuex-persistedstate'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    token: '',
    userInfo: {},
    searchForm: {}
  },
  mutations: {},
  actions: {},
  // 配置持久化
  plugins: [persistedState({ key: 'vuex_cache' })]
})

三、关键避坑(新手必看)

  1. 不要全量持久化

列表数据、临时弹窗状态、实时动态数据不要缓存,容易产生脏数据、页面状态错乱。只缓存token、用户信息、全局固定配置即可。

  1. 退出登录必须手动清缓存

只清空Vuex state没用,本地缓存会残留旧数据,导致登录状态异常。

javascript 复制代码
// 退出登录清空逻辑
logout() {
  this.$store.commit('resetState')
  localStorage.removeItem('vuex_cache')
  this.$router.replace('/login')
}

四、效果

配置完成后,刷新页面不再丢失状态,无需重复调接口,页面无闪烁,完美适配开发和生产环境。

总结

Vuex本身不支持持久化,这是新手高频踩坑点。用 vuex-persistedstate 是目前最轻量化、零侵入的解决方案,开箱即用,适合所有Vue2常规项目。

日常开发小踩坑,记录一下,希望能帮到有同样问题的朋友。

相关推荐
金銀銅鐵3 小时前
为什么枚举类中可以定义抽象方法
java·后端·ai编程
陈随易4 小时前
Vue 编译器换掉 source map,快了三四成
前端·后端·程序员
txxzjmzlh5 小时前
SpringBoot 统⼀功能处理
java·spring boot·后端
nice_lcj5207 小时前
Java Lambda 表达式入门:怎么写、怎么用、常用方法有哪些
java·开发语言·后端·面试
IT_陈寒8 小时前
Redis大key删除为什么会导致服务卡顿?我的线上事故复盘
前端·人工智能·后端
系统集成-鹰翔8 小时前
ERP图片改名后仍命中识别缓存:缓存键、十分钟到期与调用计数
javascript·经验分享·后端
用户8356290780518 小时前
使用 Python 在 Excel 中添加和自定义迷你图
后端·python
码事漫谈8 小时前
给AI看一颗❤️,它就开始写递归了
后端
用户8356290780518 小时前
使用 Python 在 Excel 图表中添加趋势线与回归方程
后端·python
你三大爷8 小时前
Netty / Kafka / Redis 保序问题的源码对比与 NIO 框架主流解法
后端·架构