【vue3】基础知识点-pinia

学习vue3,都会从基础知识点学起。了解setup函数,ref,recative,watch、computed、pinia等如何使用

今天说vue3组合式api,pinia

戳这里,跳转pinia中文文档

官网的基础示例中提供了三种写法
1、选择式api,类似于vuex的写法
在这里插入图片描述
2、组合式api,vue3 组合式api写法
在这里插入图片描述
3、借助辅助函数mapStores()、mapState() 或 mapActions()
在这里插入图片描述

本文主要讲第二种写法,它与vue3的语法风格是统一的

使用:
1、定义store(state+action+getters)
//defineStore函数创建store实例对象
//defineStore函数需要传递两个参数,第一个参数:小仓库名字(唯一id,不可重复,
用于区分是哪个store,这样就不会出现命名冲突,组件中使用仓库数据是通过定义变量(useCounterStore )接收defineStore方法返回的函数,和仓库名(counter)没有直接关系)
//第二个参数:小仓库配置对象
//defineStore方法执行会返回一个函数,函数作用就是让组件可以获取到仓库数据

import {defineStore} from 'pinia'
import {ref} from 'vue'
import axios from 'axios'export const useCounterStore = defineStore('counter',()=>{
//数据(state)
const count = ref(0)
const API_URL = '/api/booklist'
cosnt list = ref([])//getter
const deoubleCount = computed(()=>count.value*2)//修改数据的方法
//(同步action)
const increment= ()=>{
count.value++
}
//(异步action,与组件中定义数据和方法的风格完全一致)
const loadList = async ()=>{
const res = await axios.get(API_URL)
list.value = res.data 
}
//以对象形式返回
return {count,increment,deoubleCount,list,loadList  }
})

2、组件使用store

<script setup>
//1、导入`useCounterStore `方法
import {useCounterStore } from '@/stores/counter'//2、执行方法得到counterStore对象
const counterStore = useCounterStore ()console.log(counterStore)//counterStore 对象包含的就是counter仓库中return出来的对象onMounted(()=>{
counterStore.loadList()  
})</script><template><button @click="counterStore.increment ">{{counterStore.count}}{{counterStore.deoubleCount }}</button><ul>
<li v-for="item in counterStore.list" :key="item.id")>
{{item.name}}
</li>
</ul></template>

打印counterStore
在这里插入图片描述

storeToRefs

为什么要使用storeToRefs,可以简化写法,原先的counterStore.count通过解构可以直接使用count。中文文档中特意注明,不能直接对store进行解构,会破坏响应式。响应式丢失,视图也不再更新。所以使用storeToRefs函数可以辅助保持数据(state+getter)的响应式解构

在这里插入图片描述
有效写法:
在这里插入图片描述

在这里插入图片描述
观察下区别,错误写法下,打印count,deoubleCount ,拿到的是两个0

在这里插入图片描述

正确写法下,,打印count,deoubleCount ,拿到的是两个响应式的对象
在这里插入图片描述
方法不需要通过storeToRefs函数解构赋值,直接从原来的counterStore中解构赋值

const {increment } = counterStore

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

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

相关文章

python进阶

目录 Json数据格式 前言 JSON格式 python数据和Json数据的相互转化 网络编程 套接字 socket服务端编程步骤 socket客户端编程步骤 python操作mysql数据库 查询并接收数据 数据插入 Json数据格式 前言 JSON是一种轻量级的数据交换格式&#xff0c;可以按照JSON指定…

【福建事业单位-资料分析】04 倍数、特殊增长率

【福建事业单位-资料分析】04 倍数、特殊增长率 一、倍数1.1现期倍数1.2 基期倍数总结 二、特殊增长率2.1 间隔增长率间隔倍数和间隔基期&#xff08;都要先求得间隔增长率r&#xff09; 2.2 年均增长率年均增长率的比较年均增长率计算-居中代入 2.3 混合增长率总结 三、总结 一…

E. Power of Points - 思维

分析&#xff1a; 题意本质就是找点在数组中任意一个位置时和所有的端点之间的距离和&#xff0c;但是直接暴力会超时&#xff0c;可以对数组排个序&#xff0c;设当前遍历的是xi&#xff0c;那么此时求的到各端点的距离就是j从1 ~ i - 1的所有端点与xi的距离之和&#xff0c;也…

AcWing 1564:哈希 ← 只具有正增量的二次探测法

【题目来源】https://www.acwing.com/problem/content/1566/【题目描述】 将一个由若干个不同正整数构成的整数序列插入到一个哈希表中&#xff0c;然后输出输入数字的位置。 哈希函数定义为 H(key)key%TSize&#xff0c;其中 TSize 是哈希表的最大大小。 利用只具有正增量的二…

配置nginx服务端口时-在同一个页面中打开多个地址端口-查看服务情况

1&#xff1a;把代码保存到xxx.html文件中 2&#xff1a;因为一个个端口打开查看&#xff0c;实在太麻烦了 3&#xff1a;在一个页面中查看多页的响应才能提高测试效率 <html><head><title>本地连接列表</title> </head><body><cente…

【C语言学习】函数的定义和调用

一、函数定义 要有返回类型、函数名和函数体 二、调用函数 函数名&#xff08;函数值&#xff09;&#xff1b; &#xff08;&#xff09;起到表示函数调用的重要作用&#xff0c;即使没有参数也需要&#xff08;&#xff09; 若有参数&#xff0c;则需要给出正确的数量和顺序…

vscode ssh远程的config/配置文件无法保存解决

问题 之前已经有了一个config&#xff0c;我想更改连接的地址和用户名&#xff0c;但是无法保存&#xff0c;显示需要管理员权限&#xff0c;但以管理员启动vscode或者以管理员权限保存都不行 未能保存“config”: Command failed: “D:\vscode\Microsoft VS Code\bin\code.c…

『PostgreSQL』在 PostgreSQL中创建只读权限和读写权限的账号

&#x1f4e3;读完这篇文章里你能收获到 理解在 PostgreSQL 数据库中创建账号的重要性以及如何进行账号管理掌握在 PostgreSQL 中创建具有只读权限和读写权限的账号的步骤和方法学会使用 SQL 命令来创建账号、为账号分配适当的权限以及控制账号对数据库的访问级别了解如何确保…

ES嵌套查询和普通查询的高亮显示区别

在 Elasticsearch 中&#xff0c;高亮显示是一种强大的搜索结果可视化工具&#xff0c;它可以帮助我们快速识别匹配的关键字或短语。在ES中&#xff0c;我们可以使用两种不同的查询方式来实现高亮显示&#xff1a;嵌套查询和普通查询。本文探讨这两种查询方式的高亮显示区别以及…

C++友元函数和友元类的使用

1.友元介绍 在C中&#xff0c;友元&#xff08;friend&#xff09;是一种机制&#xff0c;允许某个类或函数访问其他类的私有成员。通过友元&#xff0c;可以授予其他类或函数对该类的私有成员的访问权限。友元关系在一些特定的情况下很有用&#xff0c;例如在类之间共享数据或…

​朋友圈评论截图生成,制作朋友圈网页​

朋友圈头像&#xff0c;上传自己的朋友圈头像&#xff1b;不填默认随机 网名&#xff0c;填写微信昵称&#xff1b; 内容&#xff0c;需要发布的微信正文内容&#xff1b; 截图类型&#xff0c;支持纯文字、图片&#xff08;单张、九宫格&#xff09;、分享网页/公众号文章共…

初阶C语言-操作符详解(下)

&#x1f31e; “等春风得意&#xff0c;等时间嘉许&#xff01;” 接下来&#xff0c;我们把操作符没学完的继续学完&#xff01; 操作符详解 6.2sizeof和数组 7.关系操作符8.逻辑操作符9.条件操作符10.逗号表达式11.下标引用、函数调用和结构成员12.表达式求值12.1隐式类型转…

[FPAG开发]使用Vivado创建第一个程序

1 打开Vivado软件&#xff0c;新建项目 选择一个纯英文路径 选择合适的型号 产品型号ZYNQ-7010xc7z010clg400-1ZYNQ-7020xc7z010clg400-2 如果型号选错&#xff0c;可以单击这里重新选择 2 创建工程源文件 可以看到文件创建成功 双击文件打开&#xff0c;插入代码 modul…

手机突然无法获取ip地址

在日常生活中&#xff0c;我们对手机的依赖越来越大&#xff0c;尤其是在联网方面。然而&#xff0c;有时候我们可能会遇到手机无法获取IP地址的问题&#xff0c;这给我们的正常使用带来了很多不便。当我们的手机无法获得IP地址时&#xff0c;我们将无法连接到互联网或局域网&a…

react中的formik如何使用

介绍&#xff1a; Formik 是一个用于处理表单状态和验证的 React 库。它提供了一种简化和统一的方式来处理复杂的表单逻辑&#xff0c;包括表单值的管理、表单验证、表单提交和错误处理等。 使用 安装 Formik 和 Yup&#xff08;用于表单验证&#xff09;&#xff1a; // ba…

[保研/考研机试] KY30 进制转换-大整数转二进制 清华大学复试上机题 C++实现

描述 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入描述&#xff1a; 多组数据&#xff0c;每行为一个长度不超过30位的十进制非负整数。 &#xff08;注意是10进制数字的个数可能有30个&#xff0c;而非30bits的整数&#xff09; 输出描述&#xff…

JavaScript:模块化【CommonJS与ES6】

在 JavaScript 编程中&#xff0c;随着项目的复杂性增加&#xff0c;代码的组织和管理变得至关重要。模块化是一种强大的编程概念&#xff0c;它允许我们将代码划分为独立的模块&#xff0c;提高了可维护性和可扩展性。本文将详细介绍 CommonJS 和 ES6 模块&#xff0c;帮助你理…

八、复用(2)

本章概要 结合组合和继承 保证适当的清理名称隐藏 组合与继承的选择protected向上转型 再论组合和继承 结合组合与继承 你将经常同时使用组合和继承。下面的例子展示了使用继承和组合创建类&#xff0c;以及必要的构造函数初始化: class Plate {Plate(int i) {System.out.…

Java 常用编辑器 IntelliJ IDEA

文章目录 IDEA 概述IDEA 下载和安装IDEA 中的第一个代码IDEA 的项目和模块操作&#xff08;一&#xff09;类的操作&#xff08;二&#xff09;模块的操作&#xff08;三&#xff09;项目的操作 IDEA 概述 IntelliJ IDEA是一款由JetBrains开发的集成开发环境&#xff08;IDE&am…

基于java企业人力资源管理系统设计与实现

企业人力资源管理系统的设计与实现 摘 要&#xff1a;在信息化时代&#xff0c;企业的日常管理更多地使用信息化管理系统进行日常办公和管理工作&#xff0c;极大地提高了企业的生产和工作效率。 企业人力资源管理系统是为企业人力资源管理提供信息化管理的应用系统&#xff0c…