当前位置: 首页 > news >正文

Vue3 pinia持久化存储(组合式Api案例演示)

pinia-plugin-persist( pinia持久化插件)

本文采用的是 组合式Api的方式来做Pinia的持久化存储演示

如果对pinia的持久化还是不是很了解的👨‍🎓|👩‍🎓,可以看一下笔者的上一篇文章,或者去官网查看一下!!!!!!👇👇👇🔗

点击我,跳转至组合式Api声明仓库🌹🌹

文章目录

  • pinia-plugin-persist( pinia持久化插件)
  • 持久化存储:
  • 一、为什么要进行数据持久化存储
  • 二、pinia-plugin-persist使用步骤如下
    • 1.引入库
      • 代码如下:
      • 安装结果如下图所示:
    • 2.在Pinia上注册pinia-plugin-persist插件
      • 代码如下
      • 如下图所示(操作解释)
    • 3.声明测试store(组合式Api)
      • 组合式声明Store文章(不会组合式Api的同学点👇🔗)
      • 代码如下:
      • 如下图所示(代码解释):
    • 4.测试pinia数据持久化
      • 代码如下
        • 1.Vue3的Templa模版代码
        • 2.Vue3的script内代码
      • 测试结果如下图所示:
  • 三、关于pinia-plugin-persist插件的功能拓展
    • 设置存储的key值
    • 修改存储形式
    • 选择性存储对应字段(自定义状态的存储方式)
  • 总结


持久化存储:

使用过Vuex的同学大概率都对Vuex 的数据持久化存储有一定的了解。

数据持久化存储:顾名思义是对数据进行永久存储,防止页面刷新导致数据发生丢失!!!


一、为什么要进行数据持久化存储

前面已经讲过了:主要是为了防止页面刷新,导致已经有的数据出现丢失的情况。

不使用仓库也可以对数据进行持久化存储。例如:可以使用sessionStroage或localStroage去进行数据的持久化存储。

pinia-plugin-persist插件的本质也是通过 浏览器的本地存储来实现的!

二、pinia-plugin-persist使用步骤如下

1.引入库

代码如下:

//在控制台执行如下代码:npm i pinia-plugin-persist 

安装结果如下图所示:

按照常理都能正常安装成功。如果没安装成功尽量去尝试切换npm源来解决问题。

在这里插入图片描述

2.在Pinia上注册pinia-plugin-persist插件

代码如下

import { createApp } from 'vue'import {createPinia} from 'pinia'
//1.引入piniaPersist持久化插件
import piniaPersist from 'pinia-plugin-persist'
import App from './App.vue'const pinia =createPinia()
//2.在Pinia中注册  piniaPersist
pinia.use(piniaPersist)const app =createApp(App)
app.use(pinia)
app.mount('#app')

如下图所示(操作解释)

在这里插入图片描述

3.声明测试store(组合式Api)

组合式声明Store文章(不会组合式Api的同学点👇🔗)

Pinia仓库声明方式

代码如下:

import { defineStore } from "pinia";
import { ref, computed } from "vue";export const sessionStore = defineStore("sessionStore",() => {//1。定义仓库:状态const sessionCountTest = ref(0);//2。定义仓库:计算属性const testComputed = computed(() => `计算属性:$$$$$----${sessionCountTest.value}----$$$$$`);//3。定义仓库:修改状态的methodsconst addSessionCountTest = () => {sessionCountTest.value++;};const subSessionCountTest = () => {sessionCountTest.value--;};// 4.导出状态return {sessionCountTest,testComputed,addSessionCountTest,subSessionCountTest,};},{persist: {enabled: true, //Store中数据持久化生效},}
);

如下图所示(代码解释):

在这里插入图片描述

4.测试pinia数据持久化

代码如下

1.Vue3的Templa模版代码

<template><div class="pinia-persist"><div class="pinia-persist-left">sessionStore定义的状态sessionCountTest:<div class="left">{{ sessionStoreInstance.sessionCountTest }}</div></div><div class="pinia-persist-center">sessionStore定义的计算属性sessionCountTest:<div class="center">{{ sessionStoreInstance.testComputed }}</div></div><div class="pinia-persist-right">sessionStore定义的Methods:<button@click="() => {sessionStoreInstance.addSessionCountTest();}">sessionCountTest+1</button> <button@click="() => {sessionStoreInstance.subSessionCountTest();}">sessionCountTest-1</button></div></div>
</template>

2.Vue3的script内代码


<script setup>
import { sessionStore } from "../../store/piniaPersistTest/index.js";
const sessionStoreInstance = sessionStore();
</script><style scoped>
.pinia-persist {display: flex;flex-direction: column;justify-content: center;align-items: flex-start;width: 100%;height: 230px;
}
.pinia-persist .center {margin-bottom: 20px;display: inline-block;background-color: antiquewhite;
}
.pinia-persist .left {margin-bottom: 20px;display: inline-block;background-color: rgb(213, 237, 190);
}
.pinia-persist .right {margin-top: 20px;display: inline-block;background-color: rgb(215, 239, 250);
}
</style>

测试结果如下图所示:

1.正常渲染的结果如下图

在这里插入图片描述

2.修改后,并刷新页面的结果图

在这里插入图片描述

三、关于pinia-plugin-persist插件的功能拓展

设置存储的key值

 persist: {enabled: true, strategies: [{key: 'user',//这个key就是在本地存储中的属性storage: localStorage,},],},

修改存储形式

 persist: {enabled: true, strategies: [{key: 'user',storage: localStorage, //可以选择对应的存储形式(localStorage或者sessionStroage)},],},

选择性存储对应字段(自定义状态的存储方式)

 persist: {enabled: true, strategies: [{ storage: sessionStorage, paths: ['存储字段名1', '存储字段名2'] },{ storage: localStorage, paths: ['存储字段名3'] },], },

总结

本文基本就结束了,基本没有什么特别大的难度,唯一比较不容易理解的地方可能在那个组合式Api声明仓库的部分

希望可以帮助到大家!!💪💪💪

相关文章:

Vue3 pinia持久化存储(组合式Api案例演示)

pinia-plugin-persist&#xff08; pinia持久化插件&#xff09; 本文采用的是 组合式Api的方式来做Pinia的持久化存储演示 如果对pinia的持久化还是不是很了解的&#x1f468;‍&#x1f393;&#xff5c;&#x1f469;‍&#x1f393;&#xff0c;可以看一下笔者的上一篇文章…...

8个你一看就觉得很棒的Vue开发技巧

1.路由参数解耦 通常在组件中使用路由参数&#xff0c;大多数人会做以下事情。 export default {methods: {getParamsId() {return this.$route.params.id}} }在组件中使用 $route 会导致与其相应路由的高度耦合&#xff0c;通过将其限制为某些 URL 来限制组件的灵活性。 正…...

vue3+ts 开发效率提升

1、vite pnpm项目初始化 pnpm&#xff1a; 比npm或yarn快10倍 pnpm与其他包管理器&#xff08;如npm和Yarn&#xff09;的不同之处在于它使用一种称为“硬链接”的独特安装方法。当你使用PNPM安装一个包时&#xff0c;它并不会将包的文件复制到每个项目的node_modules目录中&a…...

【数据结构与算法】队列和栈的相互实现以及循环队列

目录&#x1f314;一.用队列实现栈&#x1f319;1.题目描述&#x1f319;2.思路分析&#x1f319;3.代码实现⛈二.用栈实现队列☔1.题目描述☔2.思路分析☔3.代码实现&#x1f308;三.实现循环队列&#x1f314;一.用队列实现栈 &#x1f319;1.题目描述 我们先看一下题目链接…...

mysql连接不上问题解决

公司新搭内网测试环境&#xff0c;mysql远程登录问题解决 远程登录: 1 修改host, mysql> select user,host,plugin from user; ---------------------------------------------------- | user | host | plugin | ------------------------…...

利用nginx实现动静分离的负载均衡集群实战

前言 大家好&#xff0c;我是沐风晓月&#xff0c;今天我们利用nginx来作为负载&#xff0c;实现两台apache服务器的动静分离集群实战&#xff1b; 本文收录于沐风晓月的专栏《linux基本功-系统服务实战》&#xff0c;更多内容可以关注我的博客&#xff1a; https://blog.csd…...

与chatGPT神聊,引领你深入浅出系统调用

在操作系统的教学中&#xff0c;系统调用的作用不言而喻&#xff0c;但是&#xff0c;对系统调用常常是雾里看花&#xff0c;似乎明白&#xff0c;又难以真正的触及&#xff0c;即使在代码中调用了系统调用&#xff0c;比如调用fork&#xff08;&#xff09;创建进程&#xff0…...

自学大数据第十天~Hbase

随着数据量的增多,数据的类型也不像原来那样都是结构化数据,还有非结构化数据; Hbase时google 的bigtable的开源实现, BigtableHbase文件存储系统GFSHDFS海量数据处理MRMR协同管理服务chubbyzookeeper虽然有了HDFS和MR,但是对于数据的实时处理是比较困难的,没有办法应对数据的…...

vue更高效的工具-vite

目录 1.webpack 2.vite是什么 3.使用vite创建项目 4.最后总结 &#x1f43c;webpack 简单来说&#xff0c;Webpack是一个打包工具。 站在2018年的角度&#xff0c;成为一个优秀的前端工程师&#xff0c;除了要会写页面样式和动态效果之外&#xff0c;还需要会用主流的单页…...

HFish蜜罐的介绍和简单测试(一)

目录 0、什么是蜜罐 0.1、蜜罐的定义 0.2、蜜罐的优势 0.3、蜜罐与情报 1、HFish介绍 1.1、设计理念 1.2、HFish架构 1.3、HFish特点 1.4、常见蜜罐场景 2、快速部署 2.1、环境要求 2.2、联网环境&#xff0c;一键安装 2.3、安装效果 3、错误排查 3.1、管理端问题…...

2023面试题汇总二

一、CSS面试题 1. 清除浮动的方式有哪些&#xff1f; 为什么要清除浮动&#xff1f;因为浮动的盒子脱离标准流&#xff0c;如果父盒子没有设置高度的话&#xff0c;下面的盒子就会撑上来。 额外标签法(在最后一个浮动标签后&#xff0c;新加一个标签&#xff0c;给其设置cle…...

C# 支付宝接口在线收款退款

收款 在C#中使用支付宝在线支付功能&#xff0c;需要使用支付宝开放平台提供的SDK&#xff08;软件开发工具包&#xff09;&#xff0c;通过SDK中提供的API&#xff08;应用程序接口&#xff09;实现在线支付功能。 以下是使用C#实现支付宝在线支付的大致步骤&#xff1a; 获…...

python例程:《企业编码生成系统》程序

目录《企业编码生成系统》程序使用说明主要代码演示源码及说明文档下载路径《企业编码生成系统》程序使用说明 在PyCharm中运行《企业编码生成系统》即可进入如图1所示的系统主界面。在该界面中可以选择要使用功能对应的菜单进行不同的操作。在选择功能菜单时&#xff0c;只需…...

基于EB工具的TC3xx_MCAL配置开发04_ADC模块软件触发Demo配置

目录 1.概述2. EB配置2.1 添加HwUnit2.2 AdcPrescale配置2.3 添加ADC通道2.4 添加Adc Group2.5 Adc Group配置2.5.1 AdcGroup->General2.5.2 AdcGroup->AdcNotification2.5.3 AdcGroup->AdcGroupDefinition2.5.4 AdcGroup->AdcResRegDefinition2.6 中断配置1.概述 …...

内存操作函数

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:介绍c语言中有关指针更深层的知识. 金句分享: ✨未来…...

免费搭建个人博客

免费搭建个人博客,并发布到公网 利用hexo搭建个人博客&#xff0c;通过gitee的pages发布到公网 1 前置准备 安装git、安装node.js&#xff08;尽量选择长期支持的版本) node.js官网&#xff1a;https://nodejs.org/en/ git官网&#xff1a;https://git-scm.com/book/zh/v2 安装…...

【Vue全家桶】详解Vue Router(一)

【Vue全家桶】Vue Router详解&#xff08;一&#xff09; Vue系列文章目录&#xff1a; 内容参考链接Vue&#xff08;一&#xff09;【Vue全家桶】邂逅Vue、Vue的多种引入方式Vue&#xff08;二&#xff09;【Vue全家桶】声明式编程、MVVMVue&#xff08;三&#xff09;【Vue…...

9大 HIVE SQL 最频繁被问到的面试题

SQL是用于数据分析和数据处理的最重要的编程语言之一&#xff0c;因此与数据科学相关的工作&#xff08;例如数据分析师、数据科学家和数据工程师&#xff09;在面试时总会问到关于 SQL 的问题。 SQL面试问题旨在评估应聘者的技术和解决问题的能力。因此对于应聘者来说&#x…...

学大数据算跟风吗?

随着互联网、物联网和人工智能等技术的不断发展&#xff0c;大数据技术逐渐进入人们的视野&#xff0c;成为一个备受关注的热点话题。那么&#xff0c;大数据专业好学吗&#xff1f;前景如何&#xff1f;下面我们来一起探讨一下。 一、大数据专业的学习难度 大数据技术是一种综…...

[C#]关于ListBox的坑

在用C#写个Demo程序的时候&#xff0c;使用ListBox保存读取到的每行内容。然后在重复读取的时候需要清除ListBox中的内容&#xff0c;我看到ListBox有清除的函数&#xff1a;lsbFiles.Items.Clear();以为这个函数就可以解决所有的问题&#xff0c;但是....于是想了个方法准备一…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

机器学习的数学基础:线性模型

线性模型 线性模型的基本形式为&#xff1a; f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法&#xff0c;得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译&#xff1a; ### 胃肠道癌症的发病率呈上升趋势&#xff0c;且有年轻化倾向&#xff08;Bray等人&#xff0c;2018&#x…...