博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue页面刷新后store数据丢失
阅读量:4125 次
发布时间:2019-05-25

本文共 976 字,大约阅读时间需要 3 分钟。

原因:

store本意不是用来存储数据的,而是存储组件状态。
但是因为存取速度比sessionStorage快。所以还是有人用来存数据。比如我。
那么这个重置的问题要咋搞呢?
解决办法:
使用window的beforeunload事件将store中的数据存储到sessionStorage中。
然后再声明周期函数created()中将session的数据替换掉vue中的store数据
不过这里有一个要注意异步的问题。因为js是异步执行机制。所以必须要等到session中的数据存储到store中之后才能执行涉及该store数据的代码,不然全部都是undefined。
可以通过promise对象来进行同步化

具体代码:

// 先建立seesion工具来统一调用// util_session.jsimport store from '../vuex/store'// 用于sessionStorage替换store函数。export function sessionReplaceStore (name) {
return new Promise((resolve, reject) => {
if (sessionStorage.getItem(name)) {
// 替换state状态 store.replaceState( Object.assign( {
}, store.state, JSON.parse(sessionStorage.getItem(name)) ) ) resolve(true) } else {
resolve(false) } })}// vue文件// xxxx.vue// 无关的内容就不写了

这样就可以了。

代码说明:

promise():javascript异步操作的处理结果

参考文档:

store.replaceState(): 用来替换store中的state数据

参考文档:

Object.assign(): 对象合并函数。将第二,第三参数的对象合并保存至第一参数的对象中。并且返回该对象。

参考文档:

转载地址:http://qkepi.baihongyu.com/

你可能感兴趣的文章
linux进程和线程的性能差异(猜)
查看>>
透视视频通信发展新趋势
查看>>
IT领域2014年发展趋势
查看>>
des中key不是那么好算的
查看>>
Torch Fails to build against CUDA 10
查看>>
linux LVS负载均衡原理 NAT DR TUN FULLNAT 模式
查看>>
LVS 负载均衡 DR模式环境搭建
查看>>
Exsi上ubuntu虚拟机显卡tesla p100 驱动和cuda踩坑。
查看>>
MPI(Message-Passing Interface)实现奇偶排序
查看>>
Centos 7 从零搭建nginx+tomcat集群
查看>>
Strust2 搭建一个简单CRUD(增、查、更、删)的操作网页
查看>>
Struts2+Hibernate实现增、删、查、改的简单网页(连接数据库)
查看>>
linpack基准测试(HPL+MKL+IMPI)安装
查看>>
Ubuntu Server(18.04)开启路由转发搭建软路由
查看>>
浅谈Bash shell的几种运行模式和cron环境变量导致command not found
查看>>
Linux bash的快捷键 提高效率
查看>>
ubuntu 16.04 Titanxp 安装cuda10.0 cudnn7.6 环境
查看>>
git使用教程
查看>>
linux gcc编译环境变量和动态库路径问题浅析以及LD_LIBRARY_PATH和LIBRARY_PATH区别
查看>>
Ubuntu 16.04 编译安装opencv 3.4.6过程和 anaconda3/lib/libtiff.so.5: undefined reference to `ZSTD_freeCStre
查看>>