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-persistedstate3、引入持久化插件
在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向外暴露了几个重要的函数,分别是createPinia、defineStore和storeToRefs 2、pinia有五个核心管理概念: store、store、getters、action、plugins 2、Pinia基本使用 1、安装过程 1、安装pinia插件:npm install pini…...
[HarmonyOS]简单说一下鸿蒙架构
鸿蒙操作系统(HarmonyOS)是由华为公司开发的一款面向全场景的操作分布式系统。它旨在提供一个统一的操作系统平台,支持多种设备,包括智能手机、平板电脑、智能电视、可穿戴设备、智能家居等。鸿蒙架构的设计目标是实现设备之间的无…...
【Python TensorFlow】进阶指南(续篇一)
在前两篇文章中,我们介绍了TensorFlow的基础知识及其在实际应用中的初步使用,并探讨了更高级的功能和技术细节。本篇将继续深入探讨TensorFlow的高级应用,包括但不限于模型压缩、模型融合、迁移学习、强化学习等领域,帮助读者进一…...
机器视觉和计算机视觉的区别
机器视觉和计算机视觉的区别 1、本质上两者是一样的,都是将光信号转换成电信号,然后交给计算机处理; 2、二者侧重点不同,计算机视觉更偏向研究,更前沿,采集到图像后交给计算机进行分析处理,包括…...
RDD 算子全面解析:从基础到进阶与面试要点
Spark 的介绍与搭建:从理论到实践_spark环境搭建-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交:本地与集群模式全解析-CSDN博客 Spark on YARN:Spark集群模式…...
Vue.js动态组件使用
在 Vue.js 中,动态组件是一种功能强大的特性,它允许你在同一个挂载点根据条件动态地切换不同的组件。这通常通过 Vue 的 <component> 元素和 is 特性来实现。以下是如何在 Vue 3 中使用动态组件的详细指南: 基本用法 定义组件…...
智能合约在供应链金融中的应用
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 智能合约在供应链金融中的应用 智能合约在供应链金融中的应用 智能合约在供应链金融中的应用 引言 智能合约概述 定义与原理 发展…...
【大数据技术基础 | 实验十】Hive实验:部署Hive
文章目录 一、实验目的二、实验要求三、实验原理四、实验环境五、实验内容和步骤(一)安装部署(二)配置HDFS(三)启动Hive 六、实验结果(一)启动结果(二)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网关微服务
在使用微服务架构时,往往我们需要搭建一个网关服务,作为各个微服务的统一入口。Spring gateway作为网关服务的后起之秀,受到各大企业的欢迎。下面介绍下网关服务Spring gateway的搭建。 引入依赖,这一步比较重要,也需要…...
性能测试|JMeter接口与性能测试项目
前言 在软件开发和运维过程中,接口性能测试是一项至关重要的工作。JMeter作为一款开源的Java应用,被广泛用于进行各种性能测试,包括接口性能测试。本文将详细介绍如何使用JMeter进行接口性能测试的过程和步骤。 JMeter是Apache组织开发的基…...
spring boot 难点解析及使用spring boot时的注意事项
1、难点解析: 1.1 配置管理: --- 尽管Spring Boot强调“习惯优于配置”,但在实际项目中,仍然需要面对大量的配置问题。如何合理地组织和管理这些配置,以确保项目的稳定性和可维护性,是一个挑战。 --- Sp…...
通过投毒Bingbot索引挖掘必应中的存储型XSS
简介 在本文中,我将讨论如何通过从外部网站对Bingbot进行投毒,来在Bing.com上实现持久性XSS攻击。 什么是存储型或持久性XSS?存储型攻击指的是将恶意脚本永久存储在目标服务器上,例如数据库、论坛、访问日志、评论栏等。受害者在…...
STM32 BootLoader 刷新项目 (九) 跳转指定地址-命令0x55
STM32 BootLoader 刷新项目 (九) 跳转指定地址-命令0x55 前面我们讲述了几种BootLoader中的命令,包括获取软件版本号、获取帮助、获取芯片ID、读取Flash保护Level。 下面我们来介绍一下BootLoader中最重要的功能之一—跳转!就像BootLoader词汇中的Boot…...
【Linux篇】面试——用户和组、文件类型、权限、进程
目录 一、权限管理 1. 用户和组 (1)相关概念 (2)用户命令 ① useradd(添加新的用户账号) ② userdel(删除帐号) ③ usermod(修改帐号) ④ passwd&…...
PET-文件包含
include发生错误报warning,继续执行。require发生错误直接error,不继续执行 无视扩展名,只要能解析,就能当可执行文件执行,哪怕文件后缀或没后缀 1 条件竞争 pass17 只需要知道tmp的路径。把xieshell.jpg上传&…...
实现uniapp-微信小程序 搜索框+上拉加载+下拉刷新
pages.json 中的配置 { "path": "pages/message", "style": { "navigationBarTitleText": "消息", "enablePullDownRefresh": true, "onReachBottomDistance": 50 } }, <template><view class…...
PostgreSQL 修改字段类型但是存在视图依赖
其实视图的存在与否在数据库界一直是一个话题。用好视图可以简化程序的很多代码,用不好视图不仅会给维护带来很多的不便,也会造成很大的性能问题。下面我从维护方面给出案例,以及当存在这种问题的时候,如何去解决这个问题。 假设…...
基于.NET 9实现实时进度条功能:前后端完整示例教程
要在基于.NET 9的应用中实现进度条功能,我们可以通过HttpContext.Response来发送实时的进度更新到前端。以下是一个简单的示例,展示了如何在ASP.NET Core应用中实现这一功能。 但是,我在.net framework4.7.2框架下,实际不了HttpC…...
力扣 LeetCode 19. 删除链表的倒数第N个结点(Day2:链表)
解题思路: 快慢指针 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…...
别再死记公式了!用Multisim仿真软件,10分钟搞懂555定时器的三种工作模式
用Multisim玩转555定时器:可视化学习三种工作模式的终极指南 记得第一次接触555定时器时,我被那些复杂的公式和抽象的工作原理搞得晕头转向。直到一位资深工程师告诉我:"别急着背公式,先看看它怎么工作。"这句话彻底改变…...
从按键消抖到外部中断:STM32 GPIO输入模式的‘避坑’指南与AFIO的隐藏用法
从按键消抖到外部中断:STM32 GPIO输入模式的‘避坑’指南与AFIO的隐藏用法 在嵌入式开发中,GPIO(通用输入输出)接口是与外部世界交互的第一道门槛。对于STM32开发者来说,GPIO配置看似简单,却暗藏诸多细节陷…...
Linux 中的硬链接和软连接是什么,二者有什么区别?
在 Linux 文件系统中,**硬链接(Hard Link)和软链接(Soft Link,又称符号链接 Symbolic Link)**是两种不同的文件引用方式。它们都允许用户通过不同的路径访问同一个文件内容,但它们的实现机制、限…...
Calypso vs PC-DMIS:三坐标两大软件脱机编程实战对比与选型指南
Calypso vs PC-DMIS:三坐标测量软件脱机编程深度对比与实战选型策略 在精密制造领域,三坐标测量机(CMM)的脱机编程能力直接决定了检测效率与资源利用率。作为行业两大标杆,蔡司Calypso与海克斯康PC-DMIS在用户界面设计、编程逻辑、仿真验证等…...
从零开始:用CosyVoice2-0.5B快速搭建AI语音生成平台
从零开始:用CosyVoice2-0.5B快速搭建AI语音生成平台 1. 为什么选择CosyVoice2-0.5B? 语音合成技术已经发展多年,但大多数解决方案要么需要复杂的配置过程,要么需要大量训练数据。阿里开源的CosyVoice2-0.5B打破了这一局面&#…...
Qwen3-TTS-VoiceDesign应用案例:智能硬件设备嵌入式多语种语音播报
Qwen3-TTS-VoiceDesign应用案例:智能硬件设备嵌入式多语种语音播报 1. 智能语音播报的市场需求 现在的智能硬件设备越来越普及,从智能家居到车载系统,从工业设备到消费电子产品,几乎都需要语音交互功能。但很多设备面临一个共同…...
工具调用准确率飙到95%!Qwen-7B解耦微调实战实录(非常详细),大模型调优从入门到精通,收藏这一篇就够了!
用Qwen-7B做Agent,本来信心满满,结果MCP一跑,选工具选不对、参数填得稀巴烂,准确率惨不忍睹,最高也就60%徘徊。 后来我发现:普通LoRA根本救不了复杂工具调用。 真正能救命的,是2026年最火的解…...
Qwen3.5-9B-AWQ-4bit参数调优实战:温度=0.7时中文回答质量与响应速度平衡点
Qwen3.5-9B-AWQ-4bit参数调优实战:温度0.7时中文回答质量与响应速度平衡点 1. 模型概述与参数调优背景 Qwen3.5-9B-AWQ-4bit是一个支持图像理解的多模态模型,能够结合上传图片与文字提示词输出中文分析结果。在实际应用中,我们发现温度参数…...
Nunchaku FLUX.1-dev GPU算力优化:TensorRT加速推理实测对比
Nunchaku FLUX.1-dev GPU算力优化:TensorRT加速推理实测对比 如果你正在使用Nunchaku FLUX.1-dev模型生成图片,可能会发现一个问题:生成速度不够快,特别是当你想批量出图或者尝试不同参数时,等待时间有点长。 今天我…...
期权到期日别慌!手把手教你搞定上交所股票期权的行权与交割(附避坑清单)
期权到期日实战指南:从行权准备到交割避坑全流程解析 手机屏幕上的红色倒计时提醒着期权合约即将到期,作为刚接触期权交易不久的新手,此刻最需要的不再是复杂的概念解释,而是一份能握在手中的应急操作清单。本文将用最直白的语言拆…...
