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

极简Vue3教程--Pinia状态管理

Pinia(发音为/piːnjʌ/,如英语中的“peenya”)是最接近piña(西班牙语中的菠萝)的词;Pinia开始于大概2019年,最初是作为一个实验为Vue重新设计状态管理,让它用起来像组合式API(Composition API)。从那时到现在,最初的设计原则依然是相同的,并且目前同时兼容Vue2、Vue3,也并不要求你使用Composition API;Pinia本质上依然是一个状态管理的库,用于跨组件、页面进行状态共享(这点和Vuex、Redux一样);

和Vuex相比,Pinia有很多的优势:比如mutations 不再存在:更友好的TypeScript支持,Vuex之前对TS的支持很不友好;不再有modules的嵌套结构:也不再有命名空间的概念,不需要记住它们的复杂关系;

使用Pinia

  1. 安装依赖

npm install pinia
  1. 创建一个pinia并且将其传递给应用程序:

我们新建一个文件夹叫stores,后续pinia相关文件都放入这个文件夹中,创建index.js

import { createPinia } from 'pinia'const pinia = createPinia()export default pinia

在main.js中引入使用

import { createApp } from 'vue'
import App from './App.vue'
import pinia from './stores'createApp(App).use(pinia).mount('#app')

这样pinia就引入了我们的app中,可以开始使用了

认识Store

一个 Store (如 Pinia)是一个实体,它会持有为绑定到你组件树的状态和业务逻辑,也就是保存了全局的状态;它有点像始终存在,并且每个人都可以读取和写入的组件;你可以在你的应用程序中定义任意数量的Store来管理你的状态;

Store有三个核心概念:state、getters、actions;

state用来存储数据,可以直接访问修改,getters类似computed,actions类似于methods,可以直接调用

定义一个Store

在stores文件夹下新建counter.js

import {defineStore} from 'pinia'export const useCounterStore = defineStore('counter', {state: () => {return {count: 0,banners: [],recommends: []}},getters: {doubleCount(state) {return state.count * 2}},actions: {async fetchHomeMultidata() {const res = await fetch("http://123.207.32.32:8000/home/multidata")const data = await res.json()this.banners = data.data.banner.listthis.recommends = data.data.recommend.listreturn 'ok'}}
})

使用store,useCounterStore是个函数,调用后可以返回一个store对象,里面可以直接使用state,getters和actions,其中state可以直接访问和修改,getters可以作为属性来使用,actions是作为方法来调用的,返回promise

<template><div class="home"><h2>count: {{ counterStore.count }}</h2><h2>count: {{ counterStore.doubleCount }}</h2><button @click="changeState">修改state</button><h2>轮播的数据</h2><ul><template v-for="item in counterStore.banners"><li>{{ item.title }}</li></template></ul></div>
</template><script setup>
import {useCounterStore} from '@/stores/counterStore';// useCounterStore是一个函数
const counterStore = useCounterStore()// actions返回的是promise
counterStore.fetchHomeMultidata().then(res => {console.log(res)
})function changeState() {// state可以直接访问和修改counterStore.count++
}</script>

相关文章:

极简Vue3教程--Pinia状态管理

Pinia&#xff08;发音为/piːnjʌ/&#xff0c;如英语中的“peenya”&#xff09;是最接近pia&#xff08;西班牙语中的菠萝&#xff09;的词&#xff1b;Pinia开始于大概2019年&#xff0c;最初是作为一个实验为Vue重新设计状态管理&#xff0c;让它用起来像组合式API&#x…...

常用的map转bean互转方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 常用的map转bean互转方法一、hutool工具类二、fastjson工具类三、beanutils_BeanUtils工具类 不太好用四、cglib BeanMap工具类 不太好用五、reflect 反射来玩 不太好玩六、I…...

2.4G收发一体芯片NRF24L01P跟国产软硬件兼容 SI24R1对比

超低功耗高性能 2.4GHz GFSK 无线收发器芯片Si24R1&#xff0c;软硬件兼容NRF24L01P. Si24R1 是一颗工作在 2.4GHz ISM 频段&#xff0c;专为低功耗无线场合设计&#xff0c;集成嵌入式ARQ 基带协议引擎的无线收发器芯片。工作频率范围为 2400MHz-2525MHz&#xff0c;共有 126个…...

设计模式之七大原则(一)——单一职责原则、开放-关闭原则

目录一、设计模式的目的二、设计模式的七大原则1.单一职责原则2.开放-关闭原则一、设计模式的目的 设计模式的目的是为了提高代码重用性、可读性、可扩展性、可靠性&#xff0c;使得程序呈现出高内聚、低耦合的特性。 代码重用性&#xff08;相同功能的代码&#xff0c;不用多…...

C++ set、unordered_set、multiset它们之间的区别与一些使用方法(不断更新)

set、unordered_set、multiset是什么&#xff1f;以及它们之间的区别 首先&#xff0c;它们三个都是C标准库提供的关联容器中的一种。只不过set、multiset容器是有序的&#xff0c;而unordered_set容器是无序的 std::set 是 C 标准库中的一个容器&#xff0c;其存储的元素按设…...

hadoop调优

hadoop调优 1 HDFS核心参数 1.1 NameNode内存生产配置 1.1.1 NameNode内存计算 每个文件块大概占用150byte&#xff0c;如果一台服务器128G&#xff0c;能存储的文件块如下 128 (G)* 1024(MB) * 1024(KB) * 1024(Byte) / 150 Byte 9.1 亿 1.1.2 Hadoop2.x 在Hadoop2.x中…...

EM@三角函数诱导公式

文章目录诱导公式单位圆坐标和三角函数记忆口诀符号看象限奇变偶不变例常用诱导公式&#x1f388;常用部分(5对)倒数关系六种三角函数间的转换关系小结ReflectionsShifts and periodicity诱导公式 诱导公式 - 维基百科&#xff0c;自由的百科全书 (wikipedia.org) 单位圆坐标…...

是不是只能学IT互联网技术才有发展前途?

当然不是&#xff0c;三百六十行&#xff0c;行行出状元。 但我们需要认清一个现实是&#xff0c;我们正处于一个信息爆炸的时代&#xff0c;掌握紧跟潮流的技术&#xff0c;才可以让我们更自信地面对每天的生活&#xff0c;才有多余的精力、财力来享受生活。“人生在世&#…...

Linux 进程:exit和_exit的辨析

目录1.接口与函数2.缓冲区3.exit 与 _exit(1)_exit(2)exit这里来认识exit函数和 _exit接口 &#xff0c;它们的作用是类似的&#xff0c;都是在调用后退出程序&#xff0c;可以在程序的任何地方调用。 1.接口与函数 exit函数和_exit接口&#xff0c;一个函数&#xff0c;一个…...

智能电子标签——商超版价签

2.1英寸TFT黑白电子价签 ★ 快速变价&#xff0c;高效运营 ★ 市场实用&#xff0c;布局物联网未来 ★ 更好客户体验 ★ 降低系统成本&#xff0c;具备竞争力 ★ 2.1英寸黑白红电子价签 ★ 电池低能耗&#xff0c;常规使用三年 ★ 穿透力强不慣障碍 ★ 2.4G载波&#x…...

计算机网络自检

1 计网体系结构 因特网结构&#xff1a; 计网三个组成成分&#xff1a; 工作方式-其中2个部分&#xff1a; 功能-两个子网&#xff1a; 5个XAN分别是&#xff1a; 传输技术&#xff0c;两者的主要区别&#xff1a; 4种基本网络拓扑结构&#xff1a; 3种交换技术&#xff1a; 协…...

DC真实数据都有哪些?Filecoin为DC数据存储的解决方案又是什么?

对于生活在数字时代的我们而言&#xff0c;数据或许就和平日呼吸的空气一样&#xff0c;已经不需要我们再去思考其概念。我们的日常生活中无时无刻都有数据的身影&#xff0c;日常的购物消费、出行、学习、记录&#xff0c;当我们每天生活有数字化加持的小区里&#xff0c;工作…...

解决vscode无法自动更新

一&#xff0e;前言 要在&#xff56;&#xff53;&#xff43;&#xff4f;&#xff44;&#xff45;里面安装插件&#xff0c;被提示版本不匹配&#xff0c;然后得更新&#xff0c;然后我发现我的&#xff07;帮助&#xff07;菜单栏下没有检查更新&#xff0c;然后我去&…...

315线上知识竞赛答题活动方案及模板分享

315线上知识竞赛答题活动方案及模板分享在315国际消费者权益日来临之际&#xff0c; 很多单位推出有奖知识竞答&#xff0c; 希望大家在了解专业知识的同时&#xff0c; 还可以拿到自己喜欢的奖品&#xff01;这是消费者委员会和监管局联合举办的“315消费知识在线有奖竞答”活…...

论文复现-2:代码部分

以CONLL03数据集为例 文章目录1 整体框架2 数据结构2.1 原始数据集2.2 处理之后的数据集3 代码部分3.0 模型参数3.1 数据预处理3.2 模型方法3.1.1 定义表示的学习权重项的学习双塔模型3.2.2 forward3.3 损失函数3.4 训练与推理Ablation study训练实例1 整体框架 任务是实体识别…...

Linux开放的端口太多了?教你一招找出所有开放的端口,然后直接干掉!

基于服务器安全性维护的目的&#xff0c;查看所有开放的端口是通常采取的第一步&#xff0c;从中检查出可疑或者不必要的端口并将其关掉。关于查看开放的端口&#xff0c;方法不止一种&#xff0c;比如lsof 命令&#xff0c;还可以使用 ss 命令。 查看开放的端口 今天我们就介…...

mysql集群简介

集群的好处 高可用性&#xff1a;故障检测及迁移&#xff0c;多节点备份。 可伸缩性&#xff1a;新增数据库节点便利&#xff0c;方便扩容。 负载均衡&#xff1a;切换某服务访问某节点&#xff0c;分摊单个节点的数据库压力。 集群要考虑的风险 网络分裂&#xff1a;群集还…...

装饰器模式

概述 当我们编写软件时&#xff0c;有时我们会遇到需要在不修改现有代码的情况下添加新功能的情况。这时&#xff0c;我们可以使用装饰器模式。 装饰器模式是一种结构性设计模式&#xff0c;它允许我们在不改变对象接口的情况下动态地向对象添加功能。装饰器模式通过创建一个…...

21 Nacos客户端本地缓存及故障转移

Nacos客户端本地缓存及故障转移 在Nacos本地缓存的时候有的时候必然会出现一些故障&#xff0c;这些故障就需要进行处理&#xff0c;涉及到的核心类为ServiceInfoHolder和FailoverReactor。 本地缓存有两方面&#xff0c;第一方面是从注册中心获得实例信息会缓存在内存当中&a…...

遍历读取文件夹下的所有文件

遍历读取文件夹下的所有文件 例如&#xff0c;读取文件夹下&#xff0c;子文件夹的所有的jpg文件&#xff1a; import glob path "./database/20230302/night/*/*.jpg"#设置自己的文件夹路径以及文件 image_files glob.glob(path, recursiveTrue)for image_file …...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...