Vue3 Pinia 全局状态管理工具的使用

news2025/7/10 21:45:30

Pinia 是 Vue3 官方更推荐使用的全局状态管理工具。

Pinia 最初正是为了探索 Vuex 的下一个版本而开发的,因此整合了核心团队关于 Vuex 5 的许多想法。最终,我们意识到 Pinia 已经实现了我们想要在 Vuex 5 中提供的大部分内容,因此决定将其作为新的官方推荐。——摘自 Vue3 官网 - Pinia

 本文主要记录在 Vue3 项目中使用 Pinia 的步骤,首先更多关于 Pinia 使用的规则介绍建议查阅 Pinia 官方文档。

使用步骤

首先你需要有一个 Vue3 的项目脚手架,本文以此为前提开始安装配置使用:

NPM安装

yarn add pinia
# 或者使用 npm
npm install pinia

在 main.js 中配置注册 Pinia

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'

const pinia = createPinia()
const app = createApp(App)
// 注册 Pinia 插件
app.use(pinia)
app.mount('#app')

创建 store 仓库

src 目录下创建 store 目录,在 store 目录中新建 index.js 文件,创建 store 仓库的示例代码如下:

// 创建 store 仓库
import { defineStore } from 'pinia'
/**
 * defineStore() 第一个参数要求是一个独一无二的名字被用作 id ,是必须传入的
 * 第二个参数有 setup 和 option 两种写法,示例如下:
 */
import { ref } from 'vue'

// setup 函数式写法:
export const useStore = defineStore('main', () => {
  const count = ref(0)
  function addCount () {
    count.value++
  }

  return { count, addCount }
})

// Option API 的写法:
/*
export const useStore = defineStore('main',{
  state: ()=> ({
    count: 0,
  }),
  // state 的 计算属性
  getters: {},
  // 定义操作 state 的方法
  actions: {
    addCount() {
      this.count++
    }
  }
})
*/

注:示例代码中有 setup 和 option 两种写法,官方并没有更推荐使用哪种,具体看开发者个人进行选择,个人感觉 setup 函数式更贴合 Vue3。

使用示例

 

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

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

相关文章

E-梅莉的市场经济学

E-梅莉的市场经济学 题目背景 梅莉这个学期选修了经济学。但是主修心理学的她实在不擅长经济领域的分析,为此她时常抱怨自己学不会,想退课。 但是如果现在退掉的话这学期的学分就不够啦,因此她根据“梦中”的经历,“胡诌”了一…

Unity 如何实现框选游戏战斗单位

文章目录🍔 Preface✨ 如何在屏幕坐标系内绘制框选框🎉 根据框选范围定位其在世界坐标系中对应的区域🥇 在该区域内进行物理检测🍔 Preface 本文简单介绍如何实现即时战略游戏中框选战斗单位的功能,如图所示&#xff…

NeRF-SLAM 学习笔记

NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 主页:https://deepai.org/publication/nerf-slam-real-time-dense-monocular-slam-with-neural-radiance-fields 论文:https://arxiv.org/pdf/2210.13641.pdf Code:…

RabbitMQ复习笔记

文章目录RabbitMQ一、MQ引言1.1、什么是MQ1.2、MQ有哪些1.3、不同MQ特点二、RabbitMQ 的引言2.1、RabbitMQ2.2、RabbitMQ的安装2.2.1、下载2.2.2、下载的安装包2.2.3、安装步骤三、RabiitMQ 配置3.1、RabbitMQ 管理命令行3.2、web管理界面介绍3.2.1、overview概览3.2.2 Admin用…

手摸手利在idea中利用maven创建web项目

1. 下载maven,目前最新版本是3.8.6。在环境变量中创建MAVEN_HOME变量,并在PATH中添加。maven的运行依赖于java环境,这意味着在配置MAVEN前,应该已经在环境变量中配置有JAVA_HOME和PATH中配置好了JAVA相关环境。 2. 配置完毕后&…

力扣(LeetCode)84. 柱状图中最大的矩形 (C++)

朴素思想 朴素思想,找左右边界,依次乘以区间内最小上边界,取最大值。这个做法需要遍历左边界,对于每个左边界遍历右边界。因此需要 O(n2)O(n^2)O(n2) 的时间复杂度。 转换思路,确定上边界,找左右边界。这…

数据结构--循环链表

目录 1.为什么要有循环链表 2.定义 3.循环链表和单链表的图示对比 4.循环链表和单链表的代码对比 5.循环链表的操作 1.clist.h 2.clist.cpp 1.初始化plist 2.往plist中头部插入数字val 3.往plist中的尾部插入数字val 4.在plist中查找val值,找到返回该节点地址,失败返…

SpringAOP(2)-spring源码详解(七)

上篇文章说了spring的aop,在启动类加一个启动注解,注解点进源码可以看到注册了bean定义的后置处理器。每个切入点都会生成一个adviosr,他们会排序好依次注册。 他的顺序是before、after、afterRturning、afterThrowing 原创 SpringAOP&…

Mac解决鼠标滚轮反方向移动逻辑--Mos(又免费又好用哦~)

目录:🌵🌵🌵前言什么?Mac竟然需要鼠标?Mos ,让你的鼠标丝般顺滑~❤️❤️❤️忙碌的敲代码也不要忘了浪漫鸭!🌵🌵🌵前言 ✨你好啊&…

PHP连接外部服务器的MySQL参考教程

PHP连接AWS服务器 云服务器上安装MySQL参考教程 linux-安装MySQL:https://blog.csdn.net/xhmico/article/details/125197747云端服务器(linux版)部署mysql:https://blog.csdn.net/m0_51406695/article/details/123886966linux云服务器从零开始安装mysq…

你不能错过的【Python爬虫】测试2(完整源代码+架构+结果)

目录 一、关键工具包的环境以及版本二、架构展示三、各部分code3.1 yjs.py3.2 items.py3.3 middlewares.py3.4 pipelines.py3.5 settings.py四、结果4.1 控制台输出结果4.2 结果截图一、关键工具包的环境以及版本 scrapy:2.7.1版本(这里主要用到的工具包) 二、架构展示 三…

HyperLynx(三十二)高速串行总线仿真(四)

高速串行总线仿真(四) 在上节的基础上 1.通过导出到LineSim验证一个串行通道 2.快速眼图仿真 1.通过导出到LineSim验证一个串行通道 接下来,将导出网络到LineSim,并为电容分配SPICE模型。然后,将添加封装和串行电容…

WENO格式自动推导

简介 WENO格式是CFD中的一种高精度的数值格式。如果函数光滑,使用rrr个模板可以在空间上达到2r−12r-12r−1。如果出现间断,那么WENO格式退化为ENO格式。 理论上WENO可达任意阶精度,但是推导过程比较繁琐。本文使用Mathematica软件完成WENO…

一个简单的HTML网页(千与千寻电影) 大二学生网页设计与制作 电影主题网页制作

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

C++ 多态之虚函数表

虚函数表概述 C 的多态,使用动态绑定的技术,技术的核心是虚函数表(简称虚表),每个包含了虚函数的类都包含一个虚表,虚表是属于类的,而不是属于某个具体的对象,一个类只需要一个虚表即可。同一个…

猴子也能学会的jQuery第十期——jQuery元素操作(下)

📚系列文章—目录🔥 猴子也能学会的jQuery第一期——什么是jQuery 猴子也能学会的jQuery第二期——引用jQuery 猴子也能学会的jQuery第三期——使用jQuery 猴子也能学会的jQuery第四期——jQuery选择器大全 猴子也能学会的jQuery第五期——jQuery样式操作…

树莓派系统安装,使用SSD/U盘启动centos

树莓派系统安装,使用SSD/U盘启动centos argon m2 外壳厂家资料 https://www.waveshare.net/wiki/PI4-CASE-ARGON-ONE-M.2 TF卡安装系统 如果是使用TF卡安装,则参考官方文档按步骤安装即可: https://www.waveshare.net/wiki/Raspberry_Pi_Do…

FAlphaBlend——Unreal中的插值助手

游戏开发中经常要进行插值处理,这个东西处理虽然不复杂,但如果自己重新做,还是要写额外的代码,好消息是,Unreal已经为我们提供了插值助手——FAlphaBlend。 我们以一个非常简单的应用场景来说明FAlphaBlend的用处&…

matplotlib详细教学

Matplotlib初相识 认识matplotlib Matplotlib是一个Python 2D绘图库,能够以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形,用来绘制各种静态,动态,交互式的图表 一个最简单的绘图例子 matplotlib的图像都是画在对应…

Spring事务与事务传播机制

目录 1.事务的基本概念 2.Spring事务的实现 3.事务隔离级别 4.事务传播机制 1.事务的基本概念 关于事务的一些基础概念我已经在MYSQL中讲解过了,有不了解的可以移步至此篇文章:MySQL基础——数据库索引与事务_invictusQAQ的博客-CSDN博客 2.Spring…