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

vue系列=状态管理=Pinia使用

1、Pinia基本概念

1、Pinia向外暴露了几个重要的函数,分别是createPinia、defineStore和storeToRefs

2、pinia有五个核心管理概念:

        store、store、getters、action、plugins

2、Pinia基本使用

1、安装过程

1、安装pinia插件:npm install pinia --save//在main。js中引入,需要调用createPinia()方法将pinia实例化,然后挂载到vue实例上就可以了
2、// 创建pinia状态管理库
import { createPinia } from 'pinia'
const pinia = createPinia()app.use(pinia)

2、简单使用。

defineStore函数用来创建生成store对象的函数,它接收两个参数:第1个参数是store对象的唯一标识,必须保证多个不同的store对象的标识是唯一的;第2个参数是配置对象,基本配置包括state、getters和actions。Pinia要求state配置对象必须是返回state对象的箭头函数,getters是包含多个计算属性的对象,而actions是包含多个action方法的对象。

  2、创建store文件夹,并在其中创建index.js文件,内容如下:需要指定唯一的标识符,这里使用useStore作为标识符:import { defineStore } from 'pinia'export const useStore = defineStore('main', {state: () => ({count: 0}),getters: {doubleCount: (state) => state.count * 2},actions: {increment(state) {state.count++}}})

3、持久化

1、store中的数据,刷新页面后就丢失了,如果想保留这些数据,就要用到数据持久化了。

推荐使用pinia-plugin-persistedstate

2、安装插件

 npm install pinia-plugin-persistedstate

3、引入持久化插件


在mai.js// 创建pinia状态管理库
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'const pinia = createPinia()
// 引用插件
pinia.use(piniaPluginPersistedstate)

4、开启持久化数据

最后对要实现状态数据持久化的Pinia模块进行持久化的开启配置,比如我们要对计数器模块的count进行持久化处理,只需在counter.js文件中添加persist为true的配置即可。

4、举个例子

1、在store中定义一个一个counter.js文件

const useCounterStore = defineStore('counter', {state: () => ({count: 0,countList: []}),actions: {increment(num) {this.count++;this.countList.push(this.count);},decrement(num) {this.count--;this.countList.push(this.count);},reset() {this.count = 0;this.countList = [];},save() {localStorage.setItem('count', JSON.stringify(this.count));localStorage.setItem('countList', JSON.stringify(this.countList));},},getters: {showCount: (state) => state.count,showCountList: (state) => state.countList,},persist: true,
});export default useCounterStore;

2、在vue组件中使用

<template>
<div>{{ store.count }}
</div>
<div>{{store.showCount}}
</div><div>{{store.countList}}</div><el-button @click="store.increment">+</el-button><el-button @click="store.decrement">-</el-button><el-button @click="store.reset">异步+</el-button>
</template>
<script setup>import useCounterStore from "@/storespinia/counter";
const store = useCounterStore();</script>

5、模块汇总化

1、其中pinia中可以自己归类于一个模块,可以互相不影响,但是也可以通过模块化将相关的模块归集在一起,进行模块的处理化

2、新建立一个index.js

// 统一导出userstore模块
import useCounterStore from "@/storespinia/counter.js";
import userStoreLogin from "@/storespinia/user.js";export default function userStore() {return {counter:useCounterStore(),userLogin:userStoreLogin(),}
}

3、引用模块化

<div>{{ ddd.count }}
</div>
<div>{{ddd.showCount}}
</div><el-button @click="ddd.increment">+</el-button><el-button @click="ddd.decrement">-</el-button><el-button @click="ddd.reset">异步+</el-button><el-button @click="ddd.double">同步+</el-button></template>
<script setup>import userStore from "@/storespinia/index";const store = userStore();
const ddd = store.counter;</script>

相关文章:

vue系列=状态管理=Pinia使用

1、Pinia基本概念 1、Pinia向外暴露了几个重要的函数&#xff0c;分别是createPinia、defineStore和storeToRefs 2、pinia有五个核心管理概念&#xff1a; store、store、getters、action、plugins 2、Pinia基本使用 1、安装过程 1、安装pinia插件&#xff1a;npm install pini…...

[HarmonyOS]简单说一下鸿蒙架构

鸿蒙操作系统&#xff08;HarmonyOS&#xff09;是由华为公司开发的一款面向全场景的操作分布式系统。它旨在提供一个统一的操作系统平台&#xff0c;支持多种设备&#xff0c;包括智能手机、平板电脑、智能电视、可穿戴设备、智能家居等。鸿蒙架构的设计目标是实现设备之间的无…...

【Python TensorFlow】进阶指南(续篇一)

在前两篇文章中&#xff0c;我们介绍了TensorFlow的基础知识及其在实际应用中的初步使用&#xff0c;并探讨了更高级的功能和技术细节。本篇将继续深入探讨TensorFlow的高级应用&#xff0c;包括但不限于模型压缩、模型融合、迁移学习、强化学习等领域&#xff0c;帮助读者进一…...

机器视觉和计算机视觉的区别

机器视觉和计算机视觉的区别 1、本质上两者是一样的&#xff0c;都是将光信号转换成电信号&#xff0c;然后交给计算机处理&#xff1b; 2、二者侧重点不同&#xff0c;计算机视觉更偏向研究&#xff0c;更前沿&#xff0c;采集到图像后交给计算机进行分析处理&#xff0c;包括…...

RDD 算子全面解析:从基础到进阶与面试要点

Spark 的介绍与搭建&#xff1a;从理论到实践_spark环境搭建-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交&#xff1a;本地与集群模式全解析-CSDN博客 Spark on YARN&#xff1a;Spark集群模式…...

Vue.js动态组件使用

在 Vue.js 中&#xff0c;动态组件是一种功能强大的特性&#xff0c;它允许你在同一个挂载点根据条件动态地切换不同的组件。这通常通过 Vue 的 <component> 元素和 is 特性来实现。以下是如何在 Vue 3 中使用动态组件的详细指南&#xff1a; 基本用法 定义组件&#xf…...

智能合约在供应链金融中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 智能合约在供应链金融中的应用 智能合约在供应链金融中的应用 智能合约在供应链金融中的应用 引言 智能合约概述 定义与原理 发展…...

【大数据技术基础 | 实验十】Hive实验:部署Hive

文章目录 一、实验目的二、实验要求三、实验原理四、实验环境五、实验内容和步骤&#xff08;一&#xff09;安装部署&#xff08;二&#xff09;配置HDFS&#xff08;三&#xff09;启动Hive 六、实验结果&#xff08;一&#xff09;启动结果&#xff08;二&#xff09;Hive基…...

Golang常见编码

1. URL 编码、解码 2. base64 编码、解码 3. hex 编码、解码 4. md5 编码 5. sha-1 编码 6. sha-256 编码 7. sha-512 编码 package mainimport ("crypto/md5""crypto/sha256""crypto/sha512""encoding/base64""encoding/h…...

搭建Spring gateway网关微服务

在使用微服务架构时&#xff0c;往往我们需要搭建一个网关服务&#xff0c;作为各个微服务的统一入口。Spring gateway作为网关服务的后起之秀&#xff0c;受到各大企业的欢迎。下面介绍下网关服务Spring gateway的搭建。 引入依赖&#xff0c;这一步比较重要&#xff0c;也需要…...

性能测试|JMeter接口与性能测试项目

前言 在软件开发和运维过程中&#xff0c;接口性能测试是一项至关重要的工作。JMeter作为一款开源的Java应用&#xff0c;被广泛用于进行各种性能测试&#xff0c;包括接口性能测试。本文将详细介绍如何使用JMeter进行接口性能测试的过程和步骤。 JMeter是Apache组织开发的基…...

spring boot 难点解析及使用spring boot时的注意事项

1、难点解析&#xff1a; 1.1 配置管理&#xff1a; --- 尽管Spring Boot强调“习惯优于配置”&#xff0c;但在实际项目中&#xff0c;仍然需要面对大量的配置问题。如何合理地组织和管理这些配置&#xff0c;以确保项目的稳定性和可维护性&#xff0c;是一个挑战。 --- Sp…...

通过投毒Bingbot索引挖掘必应中的存储型XSS

简介 在本文中&#xff0c;我将讨论如何通过从外部网站对Bingbot进行投毒&#xff0c;来在Bing.com上实现持久性XSS攻击。 什么是存储型或持久性XSS&#xff1f;存储型攻击指的是将恶意脚本永久存储在目标服务器上&#xff0c;例如数据库、论坛、访问日志、评论栏等。受害者在…...

STM32 BootLoader 刷新项目 (九) 跳转指定地址-命令0x55

STM32 BootLoader 刷新项目 (九) 跳转指定地址-命令0x55 前面我们讲述了几种BootLoader中的命令&#xff0c;包括获取软件版本号、获取帮助、获取芯片ID、读取Flash保护Level。 下面我们来介绍一下BootLoader中最重要的功能之一—跳转&#xff01;就像BootLoader词汇中的Boot…...

【Linux篇】面试——用户和组、文件类型、权限、进程

目录 一、权限管理 1. 用户和组 &#xff08;1&#xff09;相关概念 &#xff08;2&#xff09;用户命令 ① useradd&#xff08;添加新的用户账号&#xff09; ② userdel&#xff08;删除帐号&#xff09; ③ usermod&#xff08;修改帐号&#xff09; ④ passwd&…...

PET-文件包含

include发生错误报warning&#xff0c;继续执行。require发生错误直接error&#xff0c;不继续执行 无视扩展名&#xff0c;只要能解析&#xff0c;就能当可执行文件执行&#xff0c;哪怕文件后缀或没后缀 1 条件竞争 pass17 只需要知道tmp的路径。把xieshell.jpg上传&…...

实现uniapp-微信小程序 搜索框+上拉加载+下拉刷新

pages.json 中的配置 { "path": "pages/message", "style": { "navigationBarTitleText": "消息", "enablePullDownRefresh": true, "onReachBottomDistance": 50 } }, <template><view class…...

PostgreSQL 修改字段类型但是存在视图依赖

其实视图的存在与否在数据库界一直是一个话题。用好视图可以简化程序的很多代码&#xff0c;用不好视图不仅会给维护带来很多的不便&#xff0c;也会造成很大的性能问题。下面我从维护方面给出案例&#xff0c;以及当存在这种问题的时候&#xff0c;如何去解决这个问题。 假设…...

基于.NET 9实现实时进度条功能:前后端完整示例教程

要在基于.NET 9的应用中实现进度条功能&#xff0c;我们可以通过HttpContext.Response来发送实时的进度更新到前端。以下是一个简单的示例&#xff0c;展示了如何在ASP.NET Core应用中实现这一功能。 但是&#xff0c;我在.net framework4.7.2框架下&#xff0c;实际不了HttpC…...

力扣 LeetCode 19. 删除链表的倒数第N个结点(Day2:链表)

解题思路&#xff1a; 快慢指针 class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy new ListNode(-1);dummy.next head;ListNode fast dummy;ListNode slow dummy;for (int i 0; i < n; i) {fast fast.next;}while (fast.ne…...

3分钟掌握百度网盘直链解析:告别限速的全新下载方案

3分钟掌握百度网盘直链解析&#xff1a;告别限速的全新下载方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的非会员限速而烦恼吗&#xff1f;今天我要为你…...

量子机器学习核心算法解析:从量子比特到PCA与K-means实践

1. 量子信息基础&#xff1a;从比特到算法的跃迁在经典计算的世界里&#xff0c;信息的基本单位是比特&#xff0c;它非0即1&#xff0c;清晰明了。但当我们踏入量子计算的领域&#xff0c;一切规则都变得不同。量子信息的基本单元是量子比特&#xff0c;它不再局限于单一的0或…...

C#实现ASCII和字符串相互转换的代码示例

知识点 string 1 Stirng.Empty 表示空字符串。 此字段为只读。此字段的值为零长度字符串“”。string为引用数据类型。会在内存的栈和堆上分配存储空间。因此string.Empty与“”都会在栈上保存一个地址,这个地址占4字节&#xff0c;指向内存堆中的某个长度为0的空间&#xf…...

Midjourney对比度黄金公式:Contrast = f(–sref, –style, –iw) × 0.942(基于12,846张生成图回归验证)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Midjourney对比度控制的底层逻辑与黄金公式的提出 Midjourney 的图像生成并非直接操控像素级参数&#xff0c;而是通过扩散模型对潜空间&#xff08;latent space&#xff09;中语义强度与视觉张力的联合建模实…...

机器人数据采集路径优化:用最近邻算法高效求解高维相空间TSP

1. 项目概述与核心问题在机器人控制&#xff0c;尤其是对精度要求极高的领域&#xff0c;比如手术机器人&#xff0c;我们常常面临一个看似简单实则棘手的问题&#xff1a;如何让机器人高效地完成一系列指定动作&#xff0c;以收集用于训练机器学习模型的数据。这听起来像是“让…...

基于拓扑数据分析的脑电信号特征提取与癫痫样放电检测

1. 项目概述&#xff1a;从高维脑电信号到可解释的拓扑特征在神经科学和临床神经病学领域&#xff0c;脑电图&#xff08;EEG&#xff09;分析一直是诊断癫痫等神经系统疾病的核心手段。其中&#xff0c;发作间期癫痫样放电&#xff08;Interictal Epileptic Discharges, IEDs&…...

混沌时间序列预测:轻量级方法为何完胜复杂深度学习模型?

1. 项目概述与核心洞察在时间序列预测这个领域&#xff0c;尤其是在处理像洛伦兹系统这样的低维混沌动力系统时&#xff0c;我们常常会陷入一个思维定式&#xff1a;模型越复杂、参数越多、计算量越大&#xff0c;预测效果就应该越好。这个想法很自然&#xff0c;毕竟深度学习在…...

Linkey预取器:链表数据结构的高效内存访问优化

1. Linkey预取器架构解析 在计算机体系结构中&#xff0c;预取技术是提升内存访问性能的关键机制。传统预取器主要针对数组等连续内存访问模式进行优化&#xff0c;而Linkey预取器则专门为链表数据结构&#xff08;Linked Data Structures, LDS&#xff09;设计&#xff0c;通过…...

前缀和与差分 | 数组区间查询的利器

前缀和与差分 | 数组区间查询的利器 引言 前缀和&#xff08;Prefix Sum&#xff09;与差分&#xff08;Difference Array&#xff09;是数组处理中两种重要且互补的技术。前缀和用于快速计算数组区间元素的和&#xff0c;而差分用于快速对数组区间进行相同的加减操作。这两种技…...

心脏数字孪生:计算建模与机器学习融合重塑精准医疗

1. 项目概述&#xff1a;当计算心脏遇见数据智能在心血管医学的前沿&#xff0c;一场静默的革命正在进行。我们不再仅仅依赖传统的临床试验和群体统计数据来理解疾病、测试药物或规划手术。取而代之的&#xff0c;是一个融合了计算物理学、生物学和人工智能的崭新范式&#xff…...