使用vuex解决刷新页面state数据消失的问题记录
程序员文章站
2023-11-26 23:32:58
在实际的vue项目中,当我们的应用遇到多个组件之间的共享问题时,通常会用到vuex(一个状态管理的插件,可以解决不同组件之间的数据共享和数据持久化),解决组件之间同一状态的...
在实际的vue项目中,当我们的应用遇到多个组件之间的共享问题时,通常会用到vuex(一个状态管理的插件,可以解决不同组件之间的数据共享和数据持久化),解决组件之间同一状态的共享问题。
因子:
- vuex优势:相比sessionstorage,存储数据更安全,sessionstorage可以在控制台被看到。
- vuex劣势:在刷新页面后,vuex会重新更新state,所以,存储的数据会丢失。
言而总之:
实际问题:在vue项目中,使用vuex做状态管理时,调试页面时,刷新后state上的数据消失了,该如何解决?
解决思路:将state中的数据放在浏览器sessionstorage和localstorage
解决办法:
存储到localstorage
通过监听页面的刷新操作,即beforeunload前存入本地localstorage,页面加载时再从本地localstorage读取信息
在app.vue中加入下面代码
created(){ //在页面刷新时将vuex里的信息保存到localstorage里 window.addeventlistener("beforeunload",()=>{ localstorage.setitem("messagestore",json.stringify(this.$store.state)) }) //在页面加载时读取localstorage里的状态信息 localstorage.getitem("messagestore") && this.$store.replacestate(object.assign(this.$store.state,json.parse(localstorage.getitem("messagestore")))); }
使用vuex-persistedstate 插件
安装插件:npm install vuex-persistedstate --save
配置:
在store的index.js中,手动引入插件并配置
import createpersistedstate from "vuex-persistedstate" const store = new vuex.store({ // ... plugins: [createpersistedstate()] })
该插件默认持久化所有state,当然也可以指定需要持久化的state:
import createpersistedstate from "vuex-persistedstate" const store = new vuex.store({ // ... plugins: [createpersistedstate({ storage: window.sessionstorage, reducer(data) { return { // 设置只储存state中的mydata mydata: data.mydata } } })]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
使用vuex解决刷新页面state数据消失的问题记录
-
关于页面刷新vuex数据消失问题解决方案
-
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
-
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
-
持久化保存vuex数据-解决页面刷新后丢失vuex数据的问题
-
sessionStorage记录返回前端的数据,用于解决登录拦截器刷新页面的问题
-
关于页面刷新vuex数据消失问题解决方案
-
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
-
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
-
sessionStorage记录返回前端的数据,用于解决登录拦截器刷新页面的问题