快速了解状态管理库Pinia及其使用方法

news2025/4/9 5:34:11

目录

1.pinia是什么

2.为什么要使用pinia

3.pinia的优点

4.pinia在项目中使用

①创建一个使用pinia的Vue3项目

②在页面使用store


1.pinia是什么

Pinia 起源于一次探索 Vuex 下一个迭代的实验,如果你学过Vue2,那么你一定使用过Vuex。Vuex在Vue2中主要充当状态管理的角色,其实就是一个存储数据的地方,存放在Vuex中的数据在各个组件中都能访问到,它是Vue生态中重要的组成部分。在Vue3中,可以使用传统的Vuex来实现状态管理,也可以使用最新的pinia来实现状态管理

Pinia本质上依然是一个状态管理的库,它允许你跨组件/页面进行状态共享

2.为什么要使用pinia

上面我们提到了在Vue3中,可以使用传统的Vuex来实现状态管理,也可以使用最新的pinia来实现状态管理,那么既然Vue3还能使用Vuex为什么还要学pinia。所以pinia肯定相较于vuex使用起来更方便简单

  • 与Vuex相比,Pinia提供了更简单的API更少的规范Composition-API风格的API
  • 最重要的是,Vue3都推荐使用TS来编写,pinia在与TS一起使用时具有可靠的类型推断支持

3.pinia的优点

  • mutations不再存在,只有state,gettes,actions
  • 更友好的TypeScript支持
  • 不再有modules的嵌套结构,每个store都是独立的,互不影响
  • 没有命名空间模块
  • 无需动态添加 Store,默认情况下它们都是动态的
  • 不再需要注入、导入函数、调用函数
  • 支持插件来扩展自身功能
  • 支持服务端渲染(SSR)

4.pinia在项目中使用

①创建一个使用pinia的Vue3项目

可以参照该文章:

pnpm快速创建 Vue.js 项目(npm类似)_turbo夏日漱石的博客-CSDN博客

注意:

  • 创建时是否添加pinia要选择yes
  • 创建时是否使用ts要选择yes

创建完成之后的main.ts代码:

import './assets/main.css'

import { createApp } from 'vue'
import { createPinia } from 'pinia'

import App from './App.vue'
import router from './router'

const app = createApp(App)

app.use(createPinia())
app.use(router)

app.mount('#app')

stores就是我们的数据仓库,用来存放我们创建的store

②在页面使用store

以store下自带的counter.ts为例

counter.ts:

import { ref, computed } from 'vue'
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', () => {
  const count = ref(0)
  const doubleCount = computed(() => count.value * 2)
  function increment() {
    count.value++
  }

  return { count, doubleCount, increment }
})

使用:

  • 直接在页面引声明的useCountersStore 方法
/src/App.vue
<script setup lang="ts">
import { useCounterStore} from "../src/stores/counter";
const store = useCounterStore();
console.log(store);
</script>

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

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

相关文章

《让你的沟通结构化》考试试题及答案截图

中电金信新员工入职培训选修课《让你的沟通结构化》考试答案截图

基于STM32F103C8T6的系统板设计

针对兆易创新旗下型号GD32F103C8T6(兼容STM32F103C8T6)芯片设计的方案验证板,整板由micro USB供电通过1117稳压管稳压输出3.3V供电,中间配备唤醒按键和复位按键,两侧是从芯片引脚引出的IO口用于调试,其中有3.3V、5V电压选择,BOOT0模式选择,SWD调试接口,电源指示灯以及…

二、Mycat2 相关概念及读写分离

第三章 Mycat2 相关概念 3.1 概念描述 1、分库分表 按照一定规则把数据库中的表拆分为多个带有数据库实例,物理库,物理表访问路 径的分表。 解读&#xff1a;分库&#xff1a;一个电商项目&#xff0c;分为用户库、订单库等等。 分表&#xff1a;一张订单表数据数百万&#xff…

时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测

时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测 目录 时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测效果一览基本描述程序设计参考资料 效果一览 基本描述 1.时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测&a…

LoRA大模型加速微调和训练算法解读

理论 Lora( Low-Rank Adaotation)&#xff0c;低秩自适应模型微调的方法&#xff0c;它冻结预训练模型的权重&#xff0c;并将可训练的秩分解矩阵注入到transformer架构的每一层&#xff0c;从而大大减少下游任务的可训练参数的数量&#xff0c; 怎么微调下游任务:利用LoRA对…

1.Python操作txt文本

文章目录 1.Python读取一个txt文件的内容并将其写入到另一个txt文件2.Python读取一个未知编码的文件并将其设置为指定编码格式3.Python实现txt文件中字符串的替换 1.Python读取一个txt文件的内容并将其写入到另一个txt文件 # -*- encoding:gb2312 -*- import chardetdef read_…

WebSocket 协议及其使用案例

文章目录 前言一、初识 WebSocket 协议1.1 什么是 WebSocket 协议1.2 WebSocket 与 HTTP 的关系1.3 WebSocket 握手的过程1.4 WebSocket 解决了什么问题 二、WebSocket 数据帧格式2.1 WebSocket 数据帧格式图示2.2 各字段的详细说明 三、SpringBoot 项目中引入 WebSocket3.1 创…

Meta语言模型LLaMA解读:模型的下载部署与运行代码

文章目录 llama2体验地址模型下载下载步骤准备工作什么是Git LFS下载huggingface模型 模型运行代码 llama2 Meta最新语言模型LLaMA解读&#xff0c;LLaMA是Facebook AI Research团队于2023年发布的一种语言模型&#xff0c;这是一个基础语言模型的集合。 体验地址 体验地址 …

分布式锁实现一. 利用Mysql数据库update锁

文章目录 分布式锁1、什么是分布式锁&#xff1a;2、分布式锁应该具备哪些条件&#xff1a; 基于数据库的分布式锁代码传送代码运行 分布式锁 1、什么是分布式锁&#xff1a; 分布式锁&#xff0c;即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题…

hp惠普光影精灵5笔记本HP Pavilion Gaming-15-dk0135tx原装出厂Win10系统

原厂系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、惠普电脑管家等预装程序 适用型号&#xff1a; 15-dk0011tx,15-dk0018tx,15-dk0019tx,15-dk0020tx,15-dk0021tx,15-dk0038tx 15-dk0039tx,15-dk0040tx,15-dk0041tx,15-dk0125tx,15-dk0126tx,15-dk0127tx 15-dk012…

Python Opencv实践 - 霍夫线检测(Hough Lines)

import cv2 as cv import numpy as np import matplotlib.pyplot as plt import randomimg cv.imread("../SampleImages/GreenBoard.jpg") print(img.shape) plt.imshow(img[:,:,::-1])#将图像转为二值图 gray cv.cvtColor(img, cv.COLOR_BGR2GRAY) plt.imshow(gra…

【【萌新的STM32学习25--- USART寄存器的介绍】】

萌新的STM32学习25- USART寄存器的介绍 STM32–USART寄存器介绍&#xff08;F1&#xff09; 控制寄存器1 &#xff08;CR1&#xff09; 位13&#xff1a; 使能USART UE 0&#xff1a; USART分频器和输出被禁止 1&#xff1a; USART模块使能 位12 &#xff1a; 配置8个数据位…

正中优配:股票xd什么意思

作为本钱市场中的重要一环&#xff0c;股票出资已经成为现代个人和组织出资的重要挑选之一。而在股票出资中&#xff0c;出资者常常会看到股票的价格上出现"xd"字样&#xff0c;这时候不少出资者就会疑问&#xff0c;这个"xd"到底是什么意思&#xff1f;对…

Java“牵手”1688整店商品API接口数据,通过店铺ID获取整店商品详情数据,1688店铺所有商品API申请指南

1688平台店铺所有商品数据接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取1688整店的商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、价格信息等详细信息 。 获取店铺所有商品接口API是一种用于获取电商平台上商品详…

骨传导耳机音质怎么样、十大公认音质好的骨传导耳机推荐

骨传导耳机的音质相比传统的耳塞式或耳罩式耳机会有所不同。下面是骨传导耳机音质和入耳式耳机音质的区别&#xff1a; 1、低频听感&#xff1a; 相对传统耳机而言&#xff0c;骨传导耳机的低频响应可能稍显不足。由于声音是通过振动传输到内耳&#xff0c;而不是通过直接振动…

Python 实战之ChatGPT + Python 实现全自动数据处理/可视化详解

本文目录 一、引言 二、成果演示——口述式数据可视化 三、远原理述 四、实现过程 &#xff08;一&#xff09;环境配置 &#xff08;二&#xff09;申请OpenAI账号 &#xff08;一&#xff09;调用ChatGPT API &#xff08;二&#xff09;设计AI身份&#xff0c;全自动处理数据…

基于食肉植物算法优化的BP神经网络(预测应用) - 附代码

基于食肉植物算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于食肉植物算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.食肉植物优化BP神经网络2.1 BP神经网络参数设置2.2 食肉植物算法应用 4.测试结果&#xff1a;5…

GPU编程(基于Python和CUDA)(二)——显示GPU信息

系列文章目录 GPU编程&#xff08;基于Python和CUDA&#xff09;&#xff08;一&#xff09;——零基础安装pycuda GPU编程&#xff08;基于Python和CUDA&#xff09;&#xff08;二&#xff09;——显示GPU信息 显示GPU信息 系列文章目录前言通过CUDA查看GPU信息使用pycuda查…

使用openpyxl来创建一个月的日程表

首先你心里要有一张表的样子&#xff0c;openpyxl才能帮你创建出其余的29张。 import openpyxl from openpyxl.styles import Alignment, Font import calendar from datetime import datework_path rXX\YY\ZZ\日报-九月.xlsxtry:workbook openpyxl.load_workbook(work_path…

The Annotated Transformer(Attention Is All You Need)

"Attention is All You Need"[1] 一文中提出的Transformer网络结构最近引起了很多人的关注。Transformer不仅能够明显地提升翻译质量&#xff0c;还为许多NLP任务提供了新的结构。虽然原文写得很清楚&#xff0c;但实际上大家普遍反映很难正确地实现。 所以我们为此…