欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 前端技术 > vue >内容正文

vue

vuex页面数据丢失-ag凯发k8国际

发布时间:2024/10/12 vue 37 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 vuex页面数据丢失_使用vuex解决刷新页面state数据消失的问题记录 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在实际的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

}

}

})]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

总结

以上是ag凯发k8国际为你收集整理的vuex页面数据丢失_使用vuex解决刷新页面state数据消失的问题记录的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图