pinia

一、pinia是什么?

🚜🚜🚜Pinia是最接近西班牙语中的菠萝的词;背景:大概2019年,是作为一个实验为Vue重新设计状态管理,让它用起来像组合式API。从那时到现在,最初的设计原则依然是相同的,同时兼容Vue2.Vue3,也并不要求你使用组合式API,本质上依然是一个状态管理的库,用于跨组件,页面进行状态共享

Pinia和Vuex的区别

🎉🎉🎉🎉Pinia最初是为了探索Vuex的下一次迭代会是什么样子,结合了Vuex5核心团队讨论中的许多想法;
最终,团队意识到Pinia已经实现了Vuex5中大部分内容,所以决定用Pinia来替代Vuex;
既然是下一个迭代,必定有大的优势,更简单的API,具有组合式风格的API;
🍟🍟在于TS一起使用时具有可靠的类型推断支持

优势

mutations 不在存在;不再有modules的嵌套结构;
可以灵活使用每一个store,他们是通过扁平化的方式来相互使用的;
也不再有命名空间的概念,不需要记住它们的复杂关系🍳🍳🍳

二、使用步骤

1.安装库

npm install pinia

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

import {createPinia} from 'pinia'
const pinia = createPinia()
export default pinia
import pinia from './store'
createApp(App).use(pinia).mount('#app')

Store

🍔🍔什么是store,是一个实体,它会持续绑定到组件树状态和业务逻辑,也就是保存了全局的状态;
始终存在,并且都可以读取和写入组件
可以在应用程序中定义任意数量的Store来管理状态

Store有三个核心概念

state,getter,actions
等同于组件的data,computed,methods;
一旦store被实例化,就可以`直接在store上访问state,getters和actions中定义的任何属性;

定义一个Store

🌭🌭首先Store是使用defineStore()定义的,并且它需要一个唯一名称,作为第一个参数传递;

export const useCounter = defineStore("counter",{
	state(){
		return {counter:99}
	}
})

第一个参数是必要的,Pinia使用它来将store连接到devtools;
返回的函数统一使用useX作为命名方案,一种约定规范;

使用

🍿🍿🍿 首先 Store在它被使用之前是不会创建的,组件中可以通过调用use函数来使用Store

<h2>{{counterStore.counter}}</h2>
import { useCounter } from '@/store/counter'
const counterStore = useCounter()

注意Store获取之后不能被解构,会失去响应式;
pinia提供了 storeToRefs()解决

const { counter:countertwo } = storeToRefs(counterStore)

认识和定义State

🧂🧂🧂state是store的核心部分,因为store是用来帮助我们管理状态的。
在pinia中,状态被定义为返回初始状态的函数;

export const useCounter = defineStore("counter",{
	state(){
		return{counter:88}
	}
})

操作State(一)

🥓🥓🥓读取和写入state:
默认情况下,可以通过store实例访问状态来直接读取和写入状态;

const counterStore = useCounter()
conterStore.$patch({
	age:20,
	id:10
})

替换state
通过将其$state属性设置为新对象来替换Store的整个状态

counterStore.$state = {
	age:23,
	id:32
}

认识和定义Getters

🍳🧇🧇Getters相当于Store的计算属性:
可以用defineStore()中的getters属性定义;
getters中定义接收一个state作为参数的函数

export const useCounter = defineStore("counter",{
	state:()=>{
		firstname:"张"lastname:"san"
	}
}),
getters:{
	connectName:(state)=>state.firstname + state.lastname
}

访问Getters(一)

🍕🍕访问当前store的Getters:

const counterStore = useCounter();
console.log(counterStore.connectName)

Getter中访问自己的其他getters:
通过 `this来访问到当前store实例的所有其他属性

doublePlusOne:function(state){
	return this.connectName + "我是测试"
}

访问其他store的getters:

message:function(state){
	const userStore = useUser()
	return this.fullname + ";" + userStore.x
}

访问Getters(二)

🍔🍔🍔getters也可以返回一个函数,用来接收参数
在这里插入图片描述
在这里插入图片描述

认识和定义actions

🍟🍟actions相当于组件中的methods
可以使用defineStore()中的actions属性定义,并且它们非常适合定义业务;
在这里插入图片描述
在这里插入图片描述
和getters一样,在action中可以通过this访问整个store实例的所有操作;

actions执行异步操作

🍟🍟并且actions中是支持异步操作的,并且可以编写异步函数,在函数中使用await;
在这里插入图片描述
在这里插入图片描述

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vulkan Tutorial 5 顶点缓冲区

目录 16 顶点缓冲区 顶点着色器 顶点数据 管道顶点输入 17 顶点缓冲区创建 缓冲区创建 内存要求 内存分配 填充顶点缓冲区 18 暂存缓冲区 传输队列 使用暂存缓冲区 19 索引缓冲区 索引缓冲区创建 使用索引缓冲区 16 顶点缓冲区 我们将用内存中的顶点缓冲区替换…

5。STM32裸机开发(4)

嵌入式软件开发学习过程记录&#xff0c;本部分结合本人的学习经验撰写&#xff0c;系统描述各类基础例程的程序撰写逻辑。构建裸机开发的思维&#xff0c;为RTOS做铺垫&#xff08;本部分基于库函数版实现&#xff09;&#xff0c;如有不足之处&#xff0c;敬请批评指正。 &…

拥抱 Spring 全新 OAuth 解决方案

以下全文 Spring Authorization Server 简称为: SAS 背景 Spring 团队正式宣布 Spring Security OAuth 停止维护&#xff0c;该项目将不会再进行任何的迭代 目前 Spring 生态中的 OAuth2 授权服务器是 Spring Authorization Server 已经可以正式生产使用 作为 SpringBoot 3.0…

FastThreadLocal 原理解析

FastThreadLocal 每个 FastThread 包含一个 FastThreadLocalMap&#xff0c;每个 FastThreadLocalThread 中的多个 FastThreadLocal 占用不同的索引。每个 InternalThreadLocalMap 的第一个元素保存了所有的 ThreadLocal 对象。之后的元素保存了每个 ThreadLocal 对应的 value …

SpringBoot 之 Tomcat 与 Undertow 容器性能对比

一、前言&#x1f525; 环境说明&#xff1a;Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 在上一篇《SpringBoot 之配置 Undertow 容器》一文中写道&#xff1a;“Undertow 的性能和内存使用方面都要优于 Tomcat 容器”, 这一期&#xff0c;我就要给大家来求证…

批处理文件(.bat)启动redis及任何软件(同理)

批处理文件 每次从文件根目录用配置文件格式来启动redis太麻烦了 可以在桌面上使用批处理文件&#xff08;.bat&#xff09;启动Redis&#xff0c;请按照以下步骤进行操作&#xff1a; 打开文本编辑器&#xff0c;如记事本。 在编辑器中输入以下内容&#xff1a; 将文件保存…

【JavaSE】Java基础语法(三十六):File IO流

文章目录 1. File1.1 File类概述和构造方法1.2 绝对路径和相对路径1.3 File 类的常用方法1.4 递归删除文件夹及其下面的文件 2. IO2.1 分类2.2 字节输出流2.3 字节输入流2.4 文件的拷贝2.5 文件拷贝效率优化2.6 释放资源2.7 缓冲流2.8 编码表 3. commons-io 工具包3.1 API 1. F…

gitlab搭建与认证登录

gitlab搭建与认证登录 gitlab的安装配置gitlab中Ldap认证配置 gitlab的安装配置 参考链接&#xff1a; Gitlab 仓库搭建&#xff08;详细版&#xff09; 以下4项注意点&#xff1a; gitlab安装包&#xff0c;直接访问在浏览器上下载速度很慢&#xff0c;可复制链接到迅雷中进…

怎样用一周时间研究 ChatGPT

我是怎样用一周时间研究 ChatGPT 的&#xff1f; 上周大概开了 20 多个会&#xff0c;其中有一些是见了觉得今年可能会比较活跃出手的机构&#xff0c;其余见的绝大多数是和 ChatGPT 相关。 我后面就以 ChatGPT 为例&#xff0c;讲下我是如何快速一周 cover 一个赛道的&#x…

机器视觉怎么对陶瓷板的外观尺寸进行自动检测?

随着工业自动化的不断发展&#xff0c;机器视觉技术在制造业中的应用越来越广泛。在陶瓷板行业中&#xff0c;机器视觉技术可以用于自动检测陶瓷板的外观尺寸&#xff0c;提高生产效率和产品质量。下面我们来介绍机器视觉如何对陶瓷板的外观尺寸进行自动检测。 一、检测原理 …

vue常用指令

vue是前端框架&#xff0c;使用vue指令时需要导入vue.js文件&#xff1b;vue的常用指令有以下这些&#xff1a; v-bind、v-model&#xff1a;双向绑定数据、链接 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8">&…

SAP-MM-采购申请字段解析

采购申请抬头以及行项目字段解析 1、采购申请类型&#xff1a; 对PR进行分类&#xff1b; 控制PR行项目的编号间隔&#xff1b; 控制PR编号范围&#xff0c;以及是否内/外部给号&#xff1b; 控制PR的屏幕选择格式&#xff1b; 控制PR是否允许凭证抬头审批&#xff0c;如果允…

什么是MQTT?mqtt协议和http协议区别

摘要&#xff1a; 什么是MQTT&#xff1f;MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;译为&#xff1a;消息队列遥测传输&#xff0c;是一种轻量级的通讯协议&#xff0c;用于在网络上传输消息。MQTT 最初由 IBM 发布&#xff0c;后来成为 OASIS&#xf…

会话跟踪cookie和session

什么是会话跟踪技术 会话&#xff1a;用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可能包含多次请求和响应。 会话跟踪&#xff1a;一种维护浏览器状态的方法&#xff0c;服务器需…

vivo互联网视频播放体验优化的探索与实践

随着vivo互联网在视频业务领域的不断扩展&#xff0c;在多样化的业务场景下&#xff0c;如何提升每个用户的视频播放体验&#xff0c;保障最优的播放流畅度和清晰度&#xff0c;vivo互联网技术团队做了很多尝试与突破。LiveVideoStackCon 2022北京站邀请vivo互联网研发经理王道…

python接口自动化测试之unittest自动化测试框架基本使用

目录 unittest简单介绍 unittest基础使用 unittest.Testcase setUp tearDown setUpClass tearDownClass 测试用例 unittest.main() unitteest提供的各种断言方式 unittest测试用例跳过执行 跳过执行测试用例共有四种写法 self.skipTest(reason) 跳过执行测试用例注…

eBay如何实现多账号登录以及防关联?

随着跨境电商的快速发展&#xff0c;亚马逊&#xff0c;eBay已成为人们熟知的电商平台。“不把鸡蛋放在同一个篮子里”&#xff0c;多账号运营店铺有许多显而易见的好处。 但由于亚马逊平台封号状况愈演愈烈&#xff0c;不少卖家把战线转移到了eBay平台。随着入驻人数的增加&a…

Solidity拓展:数学运算过程中数据长度溢出的问题

在数学运算过程中假如超过了长度则值会变成该类型的最小值&#xff0c;如果小于了该长度则变成最大值 数据上溢 uint8 numA 255; numA;uint8的定义域为[0,255]&#xff0c;现在numA已经到顶了&#xff0c;numA会使num变成0(由于256已经超过定义域&#xff0c;它会越过256&…

Redis事务及网络处理

一 Redis事务 redis开启事务后&#xff0c;会把接下来的所有命令缓存到一个单独的队列中&#xff0c;在提交事务时&#xff0c;使这些命令不可被分割的一起执行完成。 如果使用了watch命令监视某一个key&#xff0c;如果在开启事务之后&#xff0c;提交事务之前&#xff0c;有…

FreeRTOS:队列

目录 前言一、队列简介1.1数据存储1.2多任务访问1.3出队阻塞1.4入队阻塞1.5队列操作过程图示1.5.1创建队列1.5.2向队列发送第一个消息1.5.3向队列发送第二个消息1.5.4从队列中读取消息 二、队列结构体三、队列创建3.1创建函数3.2函数xQueueCreateStatic()3.3函数xQueueCreate()…