页面刷新vuex和监听路由数据丢失

1、页面刷新vuex数据丢失

办法一:将vuex中的数据直接保存到浏览器缓存中(sessionStorage、localStorage、cookie)
办法二:在页面刷新的时候再次请求远程数据,使之动态更新vuex数据
办法三:在父页面向后台请求远程数据,并且在页面刷新前将vuex的数据先保存至sessionStorage(以防请求数据量过大页面加载时拿不到返回的数据)

分析:
办法一的缺点是不安全,不适用大数据量的存储;
办法二适用于少量的数据,并且不会出现网络延迟;
办法三是要讲的重点,办法二和办法一一起使用。

方案一相信你会单独使用,保存到缓存中,然后再在created里面再次取,页面刷新也就可以取到

方案二相信你也会单独使用,也就是再请求一次后端的信息呗。为啥不推荐呢,重复请求会降低性能,所以要使用vuex方便管理也提升性能。

方案三是两者结合版本,也就是做了双层,

监听浏览器刷新前事件,在浏览器刷新之前就把vuex里的数据保存至sessionStorage中,刷新成功后如果异步请求的数据还没返回则直接获取sessionStorage里的数据,否则获取vuex里的数据。(只有刷新后还没取到后台数据,才会从sessionStorage里取。确保数据的安全性,就算获取sessionStorage里的数据也是安全的,因为每次刷新都会重新赋值,不必担心数据被篡改问题,其次就是对sessionStorage里的数据做了加密操作)

解决刷新问题逻辑详细解析 

这里是页面created() 函数里请求用户数据getUserInfo

1、先请求vuex数据,如果成功则功 ----end

2、先请求vuex数据失败,是空的,那么请求sessionStorage,并同时再请求后端用户信息,把信息装载到vuex. ----end

然后下面又有一个监听浏览器刷新的方法,很容易懂,在浏览器刷新之前把vuex数据存储到sessionStorage

2、页面刷新监听路由数据丢失

下面就是监听路由,只要路由跳转就可以获得token值,如果刷新了那么token这个值丢失了,解决方式也跟上面一样,刷新前存储浏览器缓存,每次页面渲染先获得浏览器缓存,然后再请求数据并装载到vuex

推荐链接:如何解决vuex页面刷新数据丢失问题? - 简书 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江河地笑

实践是检验真理的唯一标准

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值