如何让Vuex刷新页面数据不丢失?实现方法和原理 vuex-persistedstate 和 vuex-persist的使用

如题:由于vue自身特性的原因,vuex中的数据在页面刷新之后其中的数据会初始化,这就导致组件之间通过vuex传递的数据在用户f5刷新页面之后会丢失

页面刷新后,想保存页面未保存的数据。我们总是习惯于放在浏览器的sessionStorage和localStorage中。但是用了vue后,vuex便可以被应用了。

vuex的优劣势:

  •      优势:相比sessionStorage,存储数据更安全,sessionStorage可以在控制台被看到
  •      劣势:在F5刷新页面后,vuex会重新更新state,所以,存储的数据会丢失。
  •      为了克服这个问题,vuex-persistedstate和 vuex-persist出现了~~

原理:

  • 将vuex的state存在localStorage或sessionStorage或cookie中一份
  • 刷新页面的一瞬间,vuex数据消失,vuex回去sessionStorage中哪会数据,变相的实现了数据刷新不丢失~

区别与建议: 个人还是推荐使用vuex-persistedstate,因为使用vuex-persist在一些浏览器,ie和微信会出现语法报错的问题

  • vuex-persist是TypeScript类型,vuex-persistedstate是JavaScript类型,默认vue的webpack是没有对TypeScript进行编译的
  • 如果想要使用vuex-persist需要手动配置一下webpack使用 webpack 编译 TypeScript 代码

第一种:vuex-persistedstate

  • 结构
  • 安装
    npm install vuex-persistedstate  --save
  • 引入及配置
    • 在store下的index.js中
    • import Vue from 'vue';
      import Vuex from 'vuex';
      import info from './modules/user-info';
      import knowledge from './modules/knowledge';
      import sixElements from './modules/six-elements';
      import difficultySpeed from './modules/difficulty-speed';import createPersistedState from 'vuex-persistedstate';Vue.use(Vuex);const store = new Vuex.Store({modules: {info,knowledge,sixElements,difficultySpeed},plugins: [createPersistedState({storage: window.sessionStorage,paths: ["info", "knowledge", "sixElements", "difficultySpeed"]})],
      });export default store;
      

    • vuex-persistedstate源码地址及API

第二种:vuex-persist

  • 目录结构
  • 安装
    npm install vuex-persist --save

  • 引入及配置
    • 在store下的index.js中
  • import Vue from 'vue';
    import Vuex from 'vuex'
    import VuexPersistence from 'vuex-persist'
    import conversion from './modules/conversion'
    import userInfo from './modules/userInfo'
    import tagviews from './modules/tagviews'Vue.use(Vuex);const vuexLocal = new VuexPersistence({key: 'message',storage: window.localStorage,reducer: (state) => ({userInfo: state.userInfo})
    })
    const vuexSession = new VuexPersistence({key: 'message',storage: window.sessionStorage,reducer: (state) => ({tagviews: state.tagviews})})
    const store = new Vuex.Store({modules: {conversion,userInfo,tagviews},plugins: [vuexSession.plugin, vuexLocal.plugin]
    })export default store
    

  • vuex-persist的API


---------------------
作者:希文Gershwin
来源:CSDN
原文:https://blog.csdn.net/weixin_44309374/article/details/101150536
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux系统中如何查看日志 (常用命令)

2019独角兽企业重金招聘Python工程师标准>>> linux系统中如何查看日志 (常用命令) cat tail -f 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/…

刚刚 Kubernetes 1.25 正式发布,所有变化都在这儿了

此版本带来了 40 项增强功能,略少于Kubernetes 1.24 中的 46 项。在这 40 项增强功能中,13 项正在升级到稳定版,10 项是对现有功能的不断改进,15 项是全新的,2 项是已弃用的功能。此版本的亮点是 PodSecurityPolicies …

vue经验 - 细节小知识点汇总(更新中...)

1. $refs 数据这么绑定的: 然后在created中抛出来,猜猜看看打印的是两个什么? 结果如下: 第一个跑出来了,第二个,却undefiend,没有东西?!。。。 后来去官网查看$refs的解…

cf769D(枚举位或运算)

题目链接:http://codeforces.com/problemset/problem/769/D 题意:求给出的 n 个数中有多少对数字的二进制形式恰好有 k 位不同 思路:两个数a, b的二进制形式恰好 k 位不同即 a ^ b 中 1 的个数,那么可以枚举.注意 n 为…

ASP.NET Core 同时支持多种认证方式

前言上次,我们实现了《ASP.NET Core 自定义认证》:services.AddAuthentication(option > {option.DefaultAuthenticateScheme DemoAuthenticationOptions.Scheme;option.DefaultChallengeScheme DemoAuthenticationOptions.Scheme;}).AddDemoAuthen…

Linux shell 编程(七):流程控制语句

流程控制语句 在shell中如果在终端输入多个命令,如果以&分隔则将命令放入后台执行,如果以;分隔,则表示一个命令集合。shell允许使用逻辑操作符&&和||来作为命令分隔符,他们分别时AND和OR. && 如果前面命令执行…

多线程锁--怎么理解Condition

在java.util.concurrent包中,有两个很特殊的工具类,Condition和ReentrantLock,使用过的人都知道,ReentrantLock(重入锁)是jdk的concurrent包提供的一种独占锁的实现。它继承自Dong Lea的 AbstractQueuedSynchronizer&a…

.NET 8 SDK安装包可以下载了

今早在一个技术交流群看到有.NET 8的安装交流,站长下载了,把安装过程记录了,总结是:目前还无法 正常使用 .NET 8 SDK,虽然可以正常下载、安装,但宇宙第一IDE VS还尚未支持,也许站长打开方式不对…

VUE3中实现word的预览功能

安装docx-preview cnpm i docx-preview --save 在vue文件中使用 <div ref"refWord" v-if"showType word" /> <script setup name"ResPreviewBox">import { ref } from vue import { httpGet, httpGetBlob } from ../utils/requ…

VUE3+pdfh5实现预览Pdf文件

安装插件 npm install pdfh5 使用 <template><el-container class"resPreview"><div ref"refPdf"/></el-container> </template><script setup name"PreviewBox">import { ref } from vue import { http…

TODO:从数据库中随机抽取一条记录

TODO&#xff1a;从数据库中随机抽取一条记录1.最直接&#xff0c;最粗暴的方法先计算记录的总数&#xff0c;然后选择一个从0到记录总数之间的随机数n&#xff0c;利用skip跳过n条记录&#xff0c;这是效率低下的的方法&#xff0c;首先的记录总数&#xff0c;在用skip会很耗时…

5gnr帧结构特点有哪些_PLC控制柜有哪些结构特点呢?

金陵奇峰PLC控制柜是指可编程控制柜&#xff0c;控制柜指成套的控制柜,可实现电机,开关的控制的电气柜。金陵奇峰PLC控制柜具有过载、短路、缺相保护等保护功能。下面奇峰小编来为大家介绍一下PLC控制柜有哪些特点。PLC控制柜特点与优势&#xff1a;1、PLC控制柜是指可编程控制…

基于 .NET 6 的轻量级 Webapi 框架 FastEndpoints

大家好&#xff0c;我是等天黑。FastEndpoints 是一个基于 .NET 6 开发的开源 webapi 框架&#xff0c;它可以很好地替代 .NET Minimal APIs 和 MVC &#xff0c;专门为开发效率而生&#xff0c;带来了全新的开发模式和编码体验。另外对于 .NET 的中间件、认证、授权、日志&…

OO学习总结(二)

第五次作业&#xff1a;多线程电梯 多线程的同步和控制 在本次作业里&#xff0c;请求发生器不断往请求队列里加入电梯请求&#xff0c;主调度器不停将电梯请求分发给从调度器&#xff0c;从调度器不断读取请求来操控电梯运行&#xff0c;因而这三者之间存在同步关系。请求发生…

3d数学基础图形与游戏开发 英文版_1850款文字标题字幕条,AE图形预设包,logo生成神器...

2019最新1850款组文字LOGO动画预设&#xff0c;一键生成&#xff01;包含图形元素/字幕/logo/动画转场/背景等所有的元素都支持AE和PR所有元素的颜色、位置、大小、文字、Logo等都可以修改&#xff0c;包含GIF动图预览&#xff0c;方便查找使用&#xff0c;一键生成狂拽炫酷屌炸…

什么?WPF 不支持 SVG ?

什么&#xff1f;WPF 不支持 SVG &#xff1f;控件名&#xff1a;SharpVectors作者&#xff1a;Elinam LLC (Japan)项目地址&#xff1a; https://github.com/ElinamLLC/SharpVectors什么是SVG&#xff1f;SVG 指可伸缩矢量图形 (Scalable Vector Graphics)&#xff1b;SVG 用…

手写数字识别

深度学习:一、感知器S型神经元sigmoid fuction:1/(1exp(-z)) ![image](https://yqfile.alicdn.com/2e0144aba1df89e4ad5437e51aa21abc052025e5.png)二、神经网路这是一个三层神经网络输入层 隐藏层 输出层三、手写数字识别神经网络一共四层神经网络&#xff0c;第一层是以28*28…

5.1 入门整合案例(SpringBoot+Spring-data-elasticsearch) ---- good

本节讲解SpringBoot与Spring-data-elasticsearch整合的入门案例。 一、环境搭建 新建maven项目&#xff0c;名字随意 pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <…

小组是什么意思_生猪期货什么时候上市?相关企业如何参与生猪期货

2020年4月生猪期货已获中国证监会批准&#xff0c;7月份大连商品交易所开展生猪期货仿真交易&#xff0c;这个期待许久的新品种上市脚步声越来越近&#xff0c;而市场各方的关注度也日益提升。同时&#xff0c;期货公司也在积极备战&#xff0c;为需要申请交割库的实体企业提供…

iNeuOS工业互联网操作系统,在航天和军工测控领域的应用

目 录1. 行业概述... 22. 解决方案... 23. 解决的痛点... 61. 行业概述现在国际形势异常严峻&#xff0c;加大了偶发武装斗争的可能性。航天和军工领域的数字化转型和建设正在积极推进&#xff0c;在与航天二院、航天三院、航天六院、航天九院、无线电厂…