Vue3状态管理库--Pinia

news2024/11/17 21:43:47

Pinia快速入门

一、什么是Pinia ?

Pinia 是 Vue 的专属的最新状态管理库 ,是 Vuex 状态管理工具的替代品。

Pinia官网链接

image-20240326193234827

  1. 提供更加简单的API (去掉了 mutation )
  2. 提供符合组合式风格的API (和 Vue3 新语法统一)
  3. 去掉了 modules 的概念,每一个 store 都是一个独立的模块
  4. 搭配 TypeScript 一起使用提供可靠的类型推断

二、创建空Vue项目并安装Pinia

以下步骤均可在官方文档中查询。

1. 创建空Vue项目

npm init vue@latest

2. 安装Pinia并注册

npm install pinia
import { createPinia } from 'pinia'

const app = createApp(App)
// 以插件的形式注册
app.use(createPinia())
app.use(router)
app.mount('#app')

三、使用Pinia实现计数器

核心步骤:

  1. 定义store
  2. 组件使用store

1- 定义store

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

export const useCounterStore = defineStore('counter', ()=>{
  // 数据 (state)
  const count = ref(0)

  // 修改数据的方法 (action)
  const increment = ()=>{
    count.value++
  }

  // 以对象形式返回
  return {
    count,
    increment
  }
})

2- 组件使用store

<script setup>
  // 1. 导入use方法
	import { useCounterStore } from '@/stores/counter'
  // 2. 执行方法得到store store里有数据和方法
  const counterStore = useCounterStore()
</script>

<template>
	<button @click="counterStore.increment">
    {{ counterStore.count }}
  </button>
</template>

image-20240326202354120

四、getters

Pinia中的 getters 直接使用 computed函数进行模拟

// 数据(state)
const count = ref(0) 
// getter (computed)
const doubleCount = computed(() => count.value * 2)

image-20240326203005973

五、异步action

思想:action函数既支持同步也支持异步,和在组件中发送网络请求写法保持一致
步骤:

  1. store中定义action
  2. 组件中触发action

1- store中定义action

const API_URL = 'http://geek.itheima.net/v1_0/channels'

export const useCounterStore = defineStore('counter', ()=>{
  // 数据
  const list = ref([])
  // 异步action
  const loadList = async ()=>{
    const res = await axios.get(API_URL)
    list.value = res.data.data.channels
  }
  
  return {
    list,
    loadList
  }
})

2- 组件中调用action

<script setup>
	import { useCounterStore } from '@/stores/counter'
  const counterStore = useCounterStore()
  // 调用异步action
  counterStore.loadList() 
</script>

<template>
	<ul>
    <li v-for="item in counterStore.list" :key="item.id">{{ item.name }}</li>
  </ul>
</template>

image-20240326205052718

六、storeToRefs保持响应式解构

直接基于store进行解构赋值,响应式数据(state和getter)会丢失响应式特性,使用storeToRefs辅助保持响应式

image-20240326205613801

<script setup>
  import { storeToRefs } from 'pinia'
	import { useCounterStore } from '@/stores/counter'
  const counterStore = useCounterStore()
  // 使用它storeToRefs包裹之后解构保持响应式
  const { count } = storeToRefs(counterStore)

  const { increment } = counterStore
  
</script>

<template>
	<button @click="increment">
    {{ count }}
  </button>
</template>

需要注意的是:storeToRefs只能结构数据,并不能解构方法,解构方法还是使用原来的方式。

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

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

相关文章

微服务(基础篇-006-Docker)

Docker是一个开源的应用容器引擎&#xff0c;它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何Linux机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间没有任何接口&#xff08;类似 iPhone 的 app&…

使用第三方远程连接工具ssh连接vagrant创建的虚拟机

vagrant默认密码都是vagrant 密码认证默认是关闭的&#xff0c;进入虚拟机&#xff0c;打开密码认证 1、使用命令vi /etc/ssh/sshd_config进入配置&#xff0c;注意要切换到root用户&#xff0c;这个配置root有权限 2、找到PasswordAuthentication默认为no,改为yes 3、重启虚…

R: 网状Meta分析进行模型构建及图形绘制

网状meta分析的制作步骤主要包括&#xff1a; 1. 绘制网状证据图 2. 普通Meta分析&#xff08;两两之间的直接比较&#xff09; 3. 网状Meta分析&#xff08;整合直接比较和间接比较的结果&#xff0c;绘制相关图形&#xff09; 4. 绘制累积概率排序图 5. 三个假设的检验…

【独立开发前线】Vol.23 这个卖Excel课程的网站,月访问量14.5万,年销售额超过200万美金

今天要给大家分享的案例网站是&#xff1a;Miss-Excel 网址是&#xff1a;Miss Excel 这是一个专门销售Excel课程的网站&#xff0c;网址一共有18个系列的视频课程&#xff0c;最便宜的44美金&#xff0c;最贵的1197美金。所有的课程都是网站的创始人Kat Norton录制的&#xf…

SDSX-小米这篇论文牛吹大了,比SD1.5快30倍,比SDXL快60倍

今天在论文集上看到一篇很新的文章&#xff1a; SDXS: Real-Time One-Step Latent Diffusion Models with Image Conditions 大至意思就是&#xff0c;小米公司做了一个新的扩散模型&#xff0c;用的是蒸馏法&#xff08;参见turbo模型 及LCM模型)&#xff0c;速度很快&#…

文生视频大模型Sora的复现经验

大家好&#xff0c;我是herosunly。985院校硕士毕业&#xff0c;现担任算法研究员一职&#xff0c;热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名&#xff0c;CCF比赛第二名&#xff0c;科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

QtCreator调试时无法显示std::string的内容

在银河麒麟V10或Ubuntu下使用QtCreator调试代码时&#xff0c;std::string类型变量在大多数情况下不显示实际内容&#xff0c;而是显示"<无法访问>"字样&#xff0c;鼠标点击进去也是看不见任何有用信息&#xff0c;这样非常影响调试效率&#xff0c;为此&…

docker 的网络管理

docker应用自带了三种类型的网络&#xff0c;然后我们自己也能自定义网络 roottest-virtual-machine:~# docker network ls NETWORK ID NAME DRIVER SCOPE 4c3e28760cff bridge bridge local afd1493dc119 host host local 5f200e2eaf22 n…

读所罗门的密码笔记04_社会信用

1. 人工智能 1.1. 人工智能可以帮助人们处理复杂的大气问题&#xff0c;完善现有的气候变化模拟&#xff0c;帮助我们更好地了解人类活动对环境造成的危害&#xff0c;以及如何减少这种危害 1.2. 人工智能也有助于减少森林退化和非法砍伐 1.3. 人工智能甚至可以将我们从枯燥…

argocd部署

一、前言 ArgoCD 是一个开源的、持续交付工具&#xff0c;用于自动化部署应用程序到 Kubernetes 集群。它基于 GitOps 理念&#xff0c;通过使用 Git 作为单一的源头来管理应用程序的配置和部署状态&#xff0c;argocd会定时监控git仓库中的yaml配置文件&#xff0c;当git仓库中…

uniapp 微信小程序 canvas 手写板文字重复倾斜水印

核心逻辑 先将坐标系中心点通过ctx.translate(canvasw / 2, canvash / 2) 平移到canvas 中心&#xff0c;再旋转设置水印 假如不 translate 直接旋转&#xff0c;则此时的旋转中心为左上角原点&#xff0c;此时旋转示意如图所示 当translate到中心点之后再旋转&#xff0c;此…

题目 3152: 蓝桥杯2023年第十四届省赛真题-接龙数列【DFS简单爆搜做法】

&#x1f44f;这个是目录哦~ DFS 只能拿到 1/4 的分数心路历程核心出装三大件get_first()get_last()dfs() 全部 DFS 只能拿到 1/4 的分数 心路历程 核心出装三大件 get_first() inline int get_first(int n) {//123//12//1while (n / 10) {n / 10;}return n; }get_last() in…

Neural Latents Benchmark: 尖锋序列潜变量模型

Neural Latents Benchmark ‘21: Evaluating latent variable models of neural population activity 挑战赛说明: https://neurallatents.github.io/ 挑战赛地址: https://eval.ai/web/challenges/challenge-page/1256/overview NeuralLatent 论文: https://arxiv.org/abs/…

【opencv】教程代码 —ImgProc (6)通过Wiener滤波器恢复运动模糊图像

6. motion_deblur_filter.cpp通过Wiener滤波器恢复运动模糊图像&#xff08;参数难调&#xff09; 您将学习如何使用维纳滤波器恢复具有运动模糊失真的图像 /** * brief 学习如何使用Wiener滤波器恢复运动模糊失真的图像。 * author 混沌鱼, karpushinngs.ru, https://github.c…

java图书管理系统(简易)

实现的基本功能&#xff1a; 登录时&#xff0c;需要输入姓名&#xff0c;然后选择作为管理者还是普通用户。选择成功后选择想要实现的功能。管理者的目录下方有有五个功能&#xff0c;而普通用户有4个功能&#xff0c;如下图 首先我们要建立Book这个类&#xff0c;里面包含书…

Swagger3探索之游龙入海

引言 后端开发中常用的接口调用工具一般使用Postman、ApiPost工具&#xff0c;但后期需要与前端联调&#xff0c;要补充接口文档花费大量时间&#xff0c;此时Swagger3应运而生&#xff0c;大大提高沟通交流的效率。 引用依赖 <!-- Swagger3 调用方式 http://ip:port/swa…

Echarts之x轴,Y轴配置项大全

ECharts是一个强大的数据可视化库&#xff0c;提供了丰富的配置项来定制图表的x轴和y轴。下面是ECharts中x轴和y轴的配置项大全&#xff1a; xAxis配置项&#xff1a; type&#xff1a;轴类型&#xff0c;可选值有&#xff1a;“value”&#xff08;数值轴&#xff09;, “cat…

IP如何异地共享文件?

【天联】 组网由于操作简单、跨平台应用、无网络要求、独创的安全加速方案等原因&#xff0c;被几十万用户广泛应用&#xff0c;解决了各行业客户的远程连接需求。采用穿透技术&#xff0c;简单易用&#xff0c;不需要在硬件设备中端口映射即可实现远程访问。 异地共享文件 在…

excel匹配替换脱敏身份证等数据

假如excel sheet1中有脱敏的身份证号码和姓名&#xff0c;如&#xff1a; sheet2中有未脱敏的数据数据 做法如下&#xff1a; 1、在sheet2的C列用公式 LEFT(A2,6)&REPT("*",8)&RIGHT(A2,4) 做出脱敏数据&#xff0c;用来与sheet1的脱敏数据匹配 2、在sheet…

案例研究|DataEase实现物业数据可视化管理与决策支持

河北隆泰物业服务有限责任公司&#xff08;以下简称为“隆泰物业”&#xff09;创建于2002年&#xff0c;总部设在河北省高碑店市&#xff0c;具有国家一级物业管理企业资质&#xff0c;通过了质量体系、环境管理体系、职业健康安全管理体系等认证。自2016年至今&#xff0c;隆…