<>1.问题描述

一般在登录成功的时候需要把用户信息,菜单信息放置vuex中,作为全局的共享数据。但是在页面刷新的时候vuex里的数据会重新初始化,导致数据丢失。因为vuex里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例,vuex里面的数据就会被清空。

我在一个组件(例如登录组件页面)中登录了后,其它页面要怎么获取和响应这个变化,使用通过计算属性实现响应数据的变化,mapGetters获取vuex
computed: { ...mapGetters(['blogUser']) },
但是刷新页面后数据丢失了!!

<>2.解决思路:

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

因为我存取的数据比较少所以通过办法一解决:

在App.vue中添加以下代码
//===========================下面是解决刷新页面丢失vuex数据 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)); }); }

技术
©2020 ioDraw All rights reserved
玩转Jetson Nano(八)人脸识别(二)Windows 10 21H1确认:经典版Edge被遗弃、不会更新python gui界面实例-Python GUI编程完整示例JDBC连接MySQL数据库Timezone时区问题FAQAndroid 12现在有了设备搜索API 可用于第三方启动程序Adobe Illustrator发布原生支持Apple Silicon的测试版软件初识Mongdb之数据查询篇(三)统计JIRA系统当前的bug情况Thread.setDaemon设置守护线程vue+element-ui 实现价格的输入限制