页面刷新 Vuex 数据丢失

2023-10-27

用 Vuex 的时候发现一个问题,在页面刷新的时候 vuex 的 state 里面存储的数据会丢失。

问题产生原因:

因为 store 里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载 vue 实例,store 里面的数据就会被重新赋值。

解决思路:

既然刷新后就会消失那这里就有两种解决方案,一种是刷新后重新获取一次数据,一种是想办法让数据一直存在,刷新后也不消失(除非用户主动退出登录)

解决过程:

1、在页面刷新后重新请求接口获取相关数据,先通过 Promise.all 获取请求状态,当需要的数据返回后,再通过触发 action 或 mutation 来进行重新赋值。数据量小的时候可以解决问题,但是有一个弊端,当获取数据量大的时候,需要调用接口太多的时候页面加载时间过长,用户体验不够友好。如果不用 Promise 阻塞页面渲染,则容易出现因页面数据缺失导致的渲染问题。而且不断刷新页面会导致过多重复请求,简单来说就是可以但没必要。

2、在页面刷新时先将数据保存到 localStorage 或者 sessionStorage 中,页面刷新后直接从存储里面读取数据再通过触发 action 或 mutation 来进行重新赋值。这种方法相对第一种或许会更好一点,具体做法可以参考这一篇文章:vuex解决刷新页面丢失数据

也可以通过插件 vuex-persistedstate 实现数据持久化。

vuex-persistedstate 使用方法:

安装:npm install vuex-persistedstate --save

在store下的index.js中,引入并配置

import Vue from 'vue';
import Vuex from 'vuex';
import createPersistedState from "vuex-persistedstate";

Vue.use(Vuex);

export default new Vuex.Store({

    /**
     * 默认是放本地存储
     */
    plugins: [createPersistedState()]

    /**
     * 也可通过配置修改存储位置,可以是 localStorage / sessionStorage / cookie
     * 此处以存储到 sessionStorage 为例
     */
    plugins: [createPersistedState({
        storage: window.sessionStorage
    })]

    /**
     * 可以存储指定 state
     */
    plugins: [createPersistedState({
        storage: window.sessionStorage,
        reducer(val) {
            return {
                // 只储存state中的user
                user: val.user
            }
        }
    })]

})

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

页面刷新 Vuex 数据丢失 的相关文章

随机推荐

  • 管理科学与工程 国内核心期刊 国外a刊及SCI

    国内 管理科学与工程 管理科学学报 A 匿名审稿 绝对牛刊 不比一般的SCi期刊的质量差 系统工程理论与实践 A 实名审稿 关系稿很多 尤其是挂编委的文章很多 但质量尚可 系统工程学报 A 匿名审稿 侧重方法论多写 编辑部的老师特好 中国管
  • unity 判断是否点击在某个面板身上

    using System Collections using System Collections Generic using UnityEngine public class TestImage MonoBehaviour Use thi
  • 随机变量序列的收敛性质分类

    分类 X n 趋向某个固定的数 X n 趋向某个确定函数的输出值 X n 的概率分布越来越接近某个特定的随机变量的概率分布 X n 和某个特定随机变量的差别的平均值 数学期望值 趋向于0 X n 和某个特定随机变量的差别的方差趋向于0 约束
  • 面试题:String 和 StringBuilder、StringBuffer 的区别?

    Java 平台提供两种类型的字符串 String 和 StringBuffer StringBuilder 它们可以存储和操作字符串 其中String是只读字符串 也就意味着String 引用的字符串内容是不能被改变的 而StringBuf
  • 多益网络校招笔试题

    马上要参加多益的笔试了 所以在网上找了一下多益的笔试题 原文 我感觉我想出了一个更简单的方法 时间复杂度O 1 如果有问题希望大家及时指正 题目如下 给定一个数x x gt 5 找到该数与3 4之间的关系 关系如下 x 3 n 4 m 然后
  • 最近我在忙什么之【毕业设计大纲】

    毕业设计工作日志 误差校正仿真 理论部分 Stewart平台位姿误差分析与标定研究 仿真部分 基于Matlab的全局搜索 单通道控制算法设计 滑模论文 根据论文仿真 填入参数 获取具体的传递函数 改进滑模的论文 扰动及对照实验设计 稳定平台
  • Ubuntu下使用MySQL(C++,Cmake)

    安装需要使用的库 sudo apt get install libmysqlclient dev 头文件 usr include mysql mysql的头文件在这里 引入头文件 include mysql h 如果找不到就 include
  • python web.py+requests 视频接收与发送

    web py是python中一个相对容易上手的web服务器搭建工具 1 安装方式 web py可以直接通过pip install 的方式安装即可 即 pip install web py 2 服务器 2 1 完整程序 import web
  • 迷宫问题—回溯法

    文章目录 一 项目分析的一般步骤 二 迷宫问题的具体解决 1 需求分析 2 问题分析 2 1 问题分析 2 2 数据结构设计的分析 3 设计 流程图设计 代码设计 3 1流程图设计 3 2代码设计 4 代码测试 5 完成交付 一 项目分析的
  • Springboot+Mybatis,dao加上@Repository注解无法注入

    在springboot 中 给mapper的接口上加上 Repository 无法生成相应的bean 从而无法 Autowired 这是因为spring扫描注解时 自动过滤掉了接口和抽象类 这种情况下可以在启动的类前加 上 MapperSc
  • 如何在 Python 中创建元组字典

    本演练是关于在 Python 中创建元组字典的全部内容 此数据结构存储键值对 通过组合字典和元组 可以创建元组字典 好处是以结构化格式组织且可访问的数据 可以轻松表示每个键的多个值 例如学生成绩或联系信息 让我们看看它如何有效地存储和检索复
  • 抖音生活小妙招类短视频创作技巧分享,几个方面带你了解整个流程

    想做抖音 又不想真人出镜 该选择什么项目做呢 更多精彩干货请关注共众号 萤火宠 免费领取108个抖音小项目 我们的学员中有宝妈 有大学生 也有不少职场人员 他们大多数都非常普通 没有什么很强的职业技能 也没有什么丰富的专业知识 但是他们有人
  • 找实习、工作的一点浅见

    一 实习的必要性 为什么需要去实习 1 实习能帮助自己增进对于具体职场的认识 包括具体工作的职责 内容 工作氛围 是否有较大压力等等 2 通过一段时间的实习经历 能帮助自己作出未来是否能胜任类似的工作的判断 如果有留用 是否考虑留下 如果没
  • 阿里的iOS协程库 coobjc 源码解析(一)——元组和协程

    Coobjc中的元组 底层主要依赖NSPointerArray进行实现 因为NSPointerArray支持插入nil指针 能配合元组中有对象为nil的特性 比较引人入胜的设计 主要是co tuple 这个宏定义 co tuple COTu
  • 学习笔记:SpringCloud 微服务技术栈_实用篇②_黑马旅游案例

    若文章内容或图片失效 请留言反馈 部分素材来自网络 若不小心影响到您的利益 请联系博主删除 前言 学习视频链接 SpringCloud RabbitMQ Docker Redis 搜索 分布式 史上最全面的 SpringCloud 微服务技
  • CSS水平垂直居中

    1 利用定位 margin auto 2 flex布局 3 grid布局 一 利用position margin auto
  • 深入剖析 Python 函数参数传递机制及高级应用

    前言 在本篇文章中 笔者将带你深入探讨 Python 函数传参的进阶主题 通过阅读本篇文章 你可以深入了解 Python 函数传参的进阶主题 掌握更多高级的函数技巧 提升你的 Python 编程能力 前面分享了Python 函数传参基础篇
  • linux 安装Elasticsearchhe和kibana以及启动遇到的错误解决(已成功运行)

    linux安装es和kibana 参考博文 https blog csdn net han12398766 article details 88373869 启动报错1 Exception elasticsearch keystore 这个
  • ELK+Wazuh搭建笔记

    本文借鉴https www cnblogs com backlion p 10394369 html 在此谢谢大佬指明方向 本人又总结了wazuh界面上opencat Vulnerabilities的后台配置情况 以及agent版本升级情况
  • 页面刷新 Vuex 数据丢失

    用 Vuex 的时候发现一个问题 在页面刷新的时候 vuex 的 state 里面存储的数据会丢失 问题产生原因 因为 store 里的数据是保存在运行内存中的 当页面刷新时 页面会重新加载 vue 实例 store 里面的数据就会被重新赋