【vue】vuex持久化插件vuex-persistedstate:

文章目录

        • 一、说明:
        • 二、手动利用HTML5的本地存储:
        • 三、利用vuex-persistedstate插件
            • 【1】安装
            • 【2】配置使用
            • 【3】存储sessionStorage的情况
            • 【4】存储cookie的情况
            • 【5】默认持久化所有state,指定需要持久化的state,配置如下
            • 【6】vuex引用多个插件的写法
            • 【7】 自定义 多种存储方式 – 配置
        • 四、API


一、说明:

Vuex是在中大型项目中必不可少的状态管理组件,刷新会重新更新状态,但是有时候我们并不希望如此。例如全局相关的,如登录状态、token、以及一些不常更新的状态等,我们更希望能够固化到本地,减少无用的接口访问,以及更佳的用户体验。
页面刷新后,想保存页面未保存的数据。我们总是习惯于放在浏览器的sessionStorage、localStorage、cookie中。但是用了vue后,vuex便可以被应用了。

vuex优势: 相比sessionStorage,存储数据更安全,sessionStorage可以在控制台被看到。
vuex劣势: 在F5刷新页面后,vuex会重新更新state,所以,存储的数据会丢失。(即刷新浏览器,vuex数据丢失)

二、手动利用HTML5的本地存储:

vuex的state在localStorage或sessionStorage或其它存储方式中取值 在mutations定义的方法里对vuex的状态操作的同时对存储也做对应的操作。这样state就会和存储一起存在并且与vuex同步

问题:最直观的就是,手动写比较麻烦
在这里插入图片描述

三、利用vuex-persistedstate插件

vuex可以进行全局的状态管理,但刷新后刷新后数据会消失,这是我们不愿意看到的。怎么解决呢,我们可以结合本地存储做到数据持久化,也可以通过插件vuex-persistedstate
插件的原理其实也是结合了存储方式,只是统一的配置就不需要手动每次都写存储方法

【1】安装
npm install vuex-persistedstate --save
【2】配置使用

在vuex初始化时候,作为组件引入在这里插入图片描述

#在store下的index.js中
import createPersistedState from 'vuex-persistedstate'
export default new Vuex.Store({// ...plugins: [createPersistedState ()]
})
#vuex-persistedstate默认使用localStorage来固化数据(默认存储于localStorage)
【3】存储sessionStorage的情况
import createPersistedState from "vuex-persistedstate"
const store = new Vuex.Store({// ...plugins: [createPersistedState({storage: window.sessionStorage})]
})
【4】存储cookie的情况
import persistedState from 'vuex-persistedstate'
import * as Cookies from 'js-cookie'export default new Vuex.Store({// ...plugins: [persistedState({storage: {getItem: key => Cookies.get(key),setItem: (key, value) => Cookies.set(key, value, { expires: 7 }),removeItem: key => Cookies.remove(key)}})]
})
【5】默认持久化所有state,指定需要持久化的state,配置如下
import createPersistedState from "vuex-persistedstate"
const store = new Vuex.Store({// ...plugins: [createPersistedState({storage: window.sessionStorage,reducer(val) {return {// 只储存state中的assessmentDataassessmentData: val.assessmentData}}})]
})
【6】vuex引用多个插件的写法
#譬如:vuex提示的插件和持久化的插件一起使用,配置如下
import createPersistedState from "vuex-persistedstate"
import createLogger from 'vuex/dist/logger'// 判断环境 vuex提示生产环境中不使用
const debug = process.env.NODE_ENV !== 'production'
const createPersisted = createPersistedState({storage: window.sessionStorage
})export default new Vuex.Store({// ...plugins: debug ? [createLogger(), createPersisted] : [createPersisted]
})
// plugins要是一个一维数组不然会解析错误
【7】 自定义 多种存储方式 – 配置

在这里插入图片描述

四、API

createPersistedState([options])使用给定的选项创建插件的新实例。可以提供以下选项来配置您的特定需求的插件:

API说明默认值
key存储持久状态的键vuex
paths部分持续状态的任何路径的数组。如果没有路径给出,完整的状态是持久的[]
reducer一个函数,将被调用来基于给定的路径持久化的状态都包含这些值
subscriber一个被调用来设置突变订阅的函数store => handler => store.subscribe(handler)
storage而不是(或与)getState和setStatelocalStorage
getState将被调用以重新水化先前持久状态的函数storage
setState将被调用来保持给定状态的函数storage
filter将被调用来过滤将setState最终触发存储的任何突变的函数() => true

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

ElementUI浅尝辄止23:Loading 加载

Loading加载组件:加载数据时显示动效。 常见于加载数据量大的业务操作,附带动态效果。 1.如何使用?区域加载 在表格等容器中加载数据时显示。 /*Element 提供了两种调用 Loading 的方法:指令和服务。对于自定义指令v-loading&am…

公园气象站——观测实时气象,保障游客安全

公园气象站是一种用于监测和记录气象数据的系统。在公园内设置公园气象站可以帮助我们了解公园内的气候状况,包括空气湿度、空气温度、风速和风向等参数。这些数据是公园管理、游客安全和环境保护等方面重要的辅助依据。 负氧离子监测:负氧离子是指空气…

数学建模--非多项式拟合法的Python实现

目录 1.算法异同区别 2.算法核心步骤 3.算法核心代码 4.算法效果展示 1.算法异同区别 #*************************************************************************************************************# 方法区别探究 1.对于多项式拟合你需要大致知道这些点的分布&#xf…

Dubbo 接口测试原理及多种方法实践总结

1、什么是 Dubbo? Dubbo 最开始是应用于淘宝网,由阿里巴巴开源的一款优秀的高性能服务框架,由 Java 开发,后来贡献给了 Apache 开源基金会组织。 下面以官网的一个说明来了解一下架构的演变过程,从而了解 Dubbo 的诞…

如何使用SQL系列 之 如何在SQL中使用WHERE条件语句

引言 在结构化查询语言 (SQL)语句中,WHERE子句限制了给定操作会影响哪些行。它们通过定义特定的条件(称为搜索条件)来实现这一点,每一行都必须满足这些条件才能受到操作的影响。 本指南将介绍WHERE子句中使用的通用语法。它还将概述如何在单个WHERE子句…

开了抖店后就可以直播带货了吗?想在抖音带货的,建议认真看完!

我是王路飞。 关于抖店和直播带货的关系,其实很多人经常搞不清楚。 不然的话,也不会有这个问题的出现了:开了抖店后就可以直播带货了吗? 在我看来,这个问题很简单,但在不了解抖音电商和直播带货其中门道…

LeetCode——和为K的子数组(中等)

题目 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入:nums [1,2,3], k 3 输出:2 题解 …

The WebSocket session [x] has been closed and no method (apart from close())

在向客户端发送消息时,session关闭了。 不管是单客户端发送消息还是多客户端发送消息,在发送消息之前判断session 是否关闭 使用 isOpen() 方法

Mysql-DML(数据处理语言)

-- 插入数据 insert into member values(1,张三,21,5000); insert into member(id,name) values(2,李四); insert into member values(3,王五,23,3000) ,(4,纪六,24,4000) ,(5,查七,25,5000); -- 更新(修改数据) 不加限制条件 该字段全部修改 update member set age…

python .gitignore文件配置

logs/ venv/ *.log .idea/ dist/test.py注意:.gitignore最好放在根目录中。如果gitignore放在被忽略的父目录中,那忽略文件就无法生效。 .gitignore规则 .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中&…

Elasticsearch 8.X 可以按照数组下标取数据吗?

1、线上环境问题 老师、同学们,有人遇到过这个问题么,索引中有一个 integer 数组字段,然后通过脚本获取数组下标为1的值作为运行时字段,发现返回的值是乱的,并不是下标为1的值, 具体如下: DELETE my_index …

sql:SQL优化知识点记录(六)

(1)索引优化1 查看一下有没有建立索引: 用到索引中的一个:type中的ref决定访问性能 用到索引中的两个:通过key_len的长度可以看出来,比第一个大一点。或者通过ref:中用到了两个常量const 用到了…

【Android Framework系列】第14章 Fragment核心原理(AndroidX版本)

1 简介 Fragment是一个历史悠久的组件,从API 11引入至今,已经成为Android开发中最常用的组件之一。 Fragment表示应用界面中可重复使用的一部分。Fragment定义和管理自己的布局,具有自己的生命周期,并且可以处理自己的输入事件。…

线程池使用不规范导致线程数大以及@Async的规范使用

文章详细内容来自:线程数突增!领导:谁再这么写就滚蛋! 下面是看完后文章的,一个总结 线程池的使用不规范,导致程序中线程数不下降,线程数量大。 临时变量的接口,通过下面简单的线…

如何合并为pdf文件?合并为pdf文件的方法

在数字化时代,人们越来越依赖电子文档进行信息交流和存储。合并为PDF成为一种常见需求,它能将多个文档合而为一,方便共享和管理。无论是合并多个单页文档,还是将多页文档合并,操作都变得简单高效。那么。如何合并为pdf…

ESP-C3入门24. 使用中断监控GPIO口

ESP-C3入门24. 使用中断监控GPIO口 一、ESP IDF中断概念1. 一些关键概念:2. GPIO 触发方式 二、ESP32 IDF 使用中断来处理 GPIO 输入的步骤1. 引入 ESP32 IDF 头文件:2. 配置 GPIO 引脚:3. 定义中断处理函数:4. 初始化 GPIO 引脚5…

移除链表元素_每日一题

“路虽远,行则将至” ❤️主页:小赛毛 ☕今日份刷题:移除链表元素 题目描述: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例1&…

真香:Alibaba开源GitHub星标100K微服务架构全彩进阶手册

前言: 微服务架构作为一种高效灵活的应用架构,正在成为企业级应用开发的主流选择。在众多的微服务架构指南中,阿里巴巴开源的GitHub微服务架构全彩进阶手册备受瞩目,其100star更是证明了其在开发者社区中的重要地位。 这本手册汇…

【Yolov5+Deepsort】训练自己的数据集(3)| 目标检测追踪 | 轨迹绘制 | 报错分析解决

📢前言:本篇是关于如何使用YoloV5Deepsort训练自己的数据集,从而实现目标检测与目标追踪,并绘制出物体的运动轨迹。本章讲解的为第三部分内容:数据集的制作、Deepsort模型的训练以及动物运动轨迹的绘制。本文中用到的数…

PHP旅游管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP 旅游管理系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 PHP 旅游管理系统 源码下载地址: https://download.csdn.net/download/qq_41…