解决vuex保存的数据刷新页面时清空
关于页面刷新导致vuex(store)里面的数据消失问题,解决思路:
通过监听页面刷新或者关闭来将 vuex 里面的数据保存到 sessionStorage 里,在页面加载时读取 sessionStorage 里的状态信息,更新 vuex 的数据
【方法一】
参考文章: vuex中store保存的数据,刷新页面会清空
主要解决代码:
1、更改store文件下index文件state的定义
const store = new Vuex.Store({ state:sessionStorage.getItem('state') ? JSON.parse(sessionStorage.getItem('state')): { //id skillId:'', //技能状态 checkStatus:'' } })
2、在App.vue中添加
mounted() { window.addEventListener('unload', this.saveState) }, methods: { saveState() { sessionStorage.setItem('state', JSON.stringify(this.$store.state)) } }
【方法二】
参考文章:vue单页面应用刷新网页后vuex的state数据丢失的解决方案
主要解决代码:
export default { name: 'App', created () { //在页面加载时读取sessionStorage里的状态信息 if (sessionStorage.getItem("store") ) { this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem("store")))) } //在页面刷新时将vuex里的信息保存到sessionStorage里 window.addEventListener("beforeunload",()=>{ sessionStorage.setItem("store",JSON.stringify(this.$store.state)) }) } }
!!!【注意】
beforeunload 事件在 ios 上不兼容,刷新页面时无法执行
解决方案: 使用 pagehide 代替 beforeunload
即:
window.addEventListener('pagehide', () => { sessionStorage.setItem('store', JSON.stringify(this.$store.state)) })
参考文章: 解决移动端无法监听页面刷新或关闭(beforeunload无效)问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具