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

包教包会vue3+ts状态管理工具pinia

一、Pinia介绍

定义:pinia是和vuex一样的状态管理工具

语法:和 Vue3 一样,它实现状态管理有两种语法:选项式API 和 组合式API

支持:vue2、typeScript、devtools

二、使用步骤

1.安装

pnpm add pinia

yarn add pinia

npm i pinia

2.在main.ts中导入,实例化

// 导入pinia
import { createPinia } from 'pinia'
const pinia = createPinia()// 挂载pinia
createApp(App).use(pinia).mount('#app')

3.创建pinia仓库并使用

(1)组合式API写法

创建:

import { defineStore } from 'pinia'
// import * as obj from 'pinia'  
// console.log(obj);   
import { ref } from 'vue'
/* 1.组合式pinia */
export const userStoreHr = defineStore('hr', () => {// (1)模拟statelet num = ref(100)const arr = ref([1, 2, 3, 4, 5])// (2)模拟mutationconst changeNum = () => {num.value += 100}// (3)模拟actionconst activeArr = () => {setTimeout(() => {const n = Math.floor(Math.random() * 10) + 1arr.value.push(n)}, 1000)}// (4)模拟gettersconst total = () => {return arr.value.reduce((sum, item) => item + sum, 0)}return { num, changeNum, activeArr, total }
})export default userStoreHr

使用:

<script setup lang="ts">
import { userStoreHr } from './store/hr'
const store = userStoreHr()
// console.log(store);
</script><template><div><div>app.vue</div><div>num:{{ store.num }} total:{{ store.total() }}</div><button @click="store.changeNum()">按钮1</button><button @click="store.activeArr()">按钮2</button>
</div>
</template>

(2)选项式API写法

创建:

// 创建pinia仓库
import { defineStore } from "pinia";export const useStoreTt = defineStore('tt', {state: () => {return {count: 10,price: 50}},actions: {addPrice() {this.price += 1console.log(this, '组合式API可以用this');}},getters: {/* 以下两种写法都可以 */// total(): number {//   return this.count * this.price// }  total: (state) => {return state.count * state.price}},
})export default useStoreTt

使用:

<script setup lang="ts">
import { useStoreTt } from './store/tt'
const store = useStoreTt()</script><template><div><div>app.vue</div><div>count :{{ store.count }} price : {{ store.price }}</div><div>total :{{ store.total }}</div><button @click="store.addPrice()">addPrice</button>
</div>
</template>

(3)storeToRefs的使用

解决:解构数据后,响应式失效的问题(不能解构函数)

<script setup lang="ts">
import { useStoreTt } from './store/tt'
// 导入storeToRefs 
import { storeToRefs } from 'pinia';
const store = useStoreTt()
// 解构的时候调用storeToRefs 
const { count, price } = storeToRefs(store)</script><template><div><div>app.vue</div><!-- 模板中直接使用 --><div>count :{{ count }} price : {{ price }}</div><div>total :{{ store.total }}</div><button @click="store.addPrice()">addPrice</button>
</div>
</template>

相关文章:

包教包会vue3+ts状态管理工具pinia

一、Pinia介绍 定义&#xff1a;pinia是和vuex一样的状态管理工具 语法&#xff1a;和 Vue3 一样&#xff0c;它实现状态管理有两种语法&#xff1a;选项式API 和 组合式API 支持&#xff1a;vue2、typeScript、devtools 二、使用步骤 1.安装 pnpm add pinia yarn add pin…...

Generated columns cannot be used in COPY

错误如下DBD::Pg::db do failed: ERROR: column "transtype" is a generated columnsec., avg: 2520 recs/sec), REPORTSINTERMEDIATETABLE in progress.DETAIL: Generated columns cannot be used in COPY. at /usr/local/share/perl5/Ora2Pg.pm line 15125.FATAL: …...

Amazon S3简介

前言&#xff1a; 这段时间来到了某大数据平台&#xff0c;做平台技术底座封装和一些架构等等&#xff0c;有结构化数据也有非结构数据&#xff0c;涉及到很多技术&#xff0c;自己也私下花时间去研究了很多&#xff0c;有很多纯技术类的还是需要梳理并记录&#xff0c;巩固以及…...

MySQL索引类型——有五种

文章目录前言一、MySQL中的索引类型有以下几种1.1 普通索引1.1.1 直接创建索引1.1.2 修改结构的方式添加索引1.1.3 创建表的时候同时创建索引1.1.4 删除索引1.2 唯一索引1.2.1 创建唯一索引1.2.2 修改表结构1.2.3 创建表的时候直接指定1.3 主键索引1.4 组合索引1.5 全文索引1.5…...

CloudCompare 二次开发(5)——非插件中的PCL环境配置(均匀采样为例)

目录 一、概述二、CMakeLists.txt三、源码编译四、代码示例五、结果展示一、概述 在进行CloudCompare二次开发的时候,可以直接在CloudCompare的核心功能中添加自己的算法,比插件式的算法集成要方便得多。因此,这里主要记录CloudCompare非插件式二次开发配置PCL,并给出具体开…...

停车辅助系统的技术和变化

各种各样的停车辅助系统已经存在了很长时间&#xff0c;但用户经常在不知道什么技术以及它是如何工作的情况下使用它们。 今天我们依次来谈谈停车辅助系统是什么&#xff0c;怎么发展以及如何应用的。 ​ 1.手信号 您可能会想&#xff0c;“为什么手信号是停车辅助系统&#x…...

扬帆优配|日均客运量恢复,民航业加速复苏,外资买入2股超亿元

春运民航客运量康复至疫情前七成。 2月16日&#xff0c;民航局举行2月例行新闻发布会。会上介绍&#xff0c;自1月7日至2月15日&#xff0c;春运40天&#xff0c;民航运送旅客5523万人次&#xff0c;日均客运量138万人次&#xff0c;同比去年春运添加39%&#xff0c;康复至2019…...

【PyTorch】教程:torch.nn.ModuleDict

Containers-ModuleList CLASS torch.nn.ModuleDict(modulesNone) 将所有的子模块放到一个字典中。 ModuleDict 可以像常规 Python 字典一样进行索引&#xff0c;但它包含的模块已正确注册&#xff0c;所有 Module 方法都可以看到。 ModuleDict 是一个有序字典。 Parameters …...

Git、小乌龟、Gitee的概述与安装应用超详细(组长与组员多人开发版本)

目录 一、概述 1.什么是Git&#xff1f; 2.Git历史来源 3.Git的优点? 4.什么是版本控制&#xff1f; 5.版本控制工具种类&#xff1f; 6.Git工作机制 7.Git、小乌龟、Gitee、凭据管理器的简单介绍 二、Git下载安装 下载Git 安装Git 安装完成后查看版本 三、下载小…...

【java 高并发编程之JUC】高阶JUC特性总结

1 线程中断机制 1.1 什么是中断&#xff1f; 首先 一个线程不应该由其他线程来强制中断或停止&#xff0c;而是应该由线程自己自行停止。所以&#xff0c;Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了。 其次 在Java中没有办法立即停止一条线程&#xff0c;然…...

行业分析| 智能无人自助设备

智能无人自助设备运用二维码技术、音视频通信技术和AI智能技术等相结合&#xff0c;提供了无人超市、自动售货机、智能快递柜等。当下很多商业地区或社区&#xff0c;都放置了智能无人自助设备&#xff0c;不仅可以为商家节省时间和精力、提升运营环境&#xff0c;也可以为众多…...

使用契约测试得不偿失?试试契约先行开发

契约维护的难题 如今微服务凭借其灵活、易开发、易扩展等优势深入人心&#xff0c;不同服务之间的集成和交互日渐繁多且复杂。这些服务之间交互的方式是多样的&#xff0c;常见的有 HTTP 请求和消息队列。在它们交互的过程中&#xff0c;会有服务的版本演进&#xff0c;交互信…...

函数编程之Function

文章目录前言一、Function是什么&#xff1f;二、Function 怎么用?1.简单使用2.真正的强大之处总结前言 在java8之后,我已经习惯了开始用stream()方式编程,但是对于新引入的其他功能,还是不清楚,今天经历了一个编程问题后,让我对于Function() 这个函数有了新的认知; 一、Func…...

Vue 双向绑定原理

Vue2 双向绑定原理 mvvm 双向绑定&#xff0c;采用数据劫持结合发布者-订阅者模式的方式&#xff0c;通过 Object.defineProperty() 来 劫持各个属性的 setter、getter&#xff0c;在数据变动时发布消息给订阅者&#xff0c;触发相应的监听回调。 几个要点&#xff1a; 1&#…...

【数据治理-03】无规矩不成方圆,聊聊如何建立数据标准

无规矩&#xff0c;不成方圆&#xff01;数据标准&#xff08;Data Standards&#xff09;是保障数据的内外部使用和交换的一致性和准确性的规范性约束&#xff0c;作为数据治理的基石&#xff0c;是绕不开的一项工作&#xff0c;如此重要的活如何干&#xff0c;咱们一起聊聊。…...

dos常用命令

DOS&#xff08;磁盘操作系统&#xff09;命令&#xff0c;是DOS操作系统的命令&#xff0c;是一种面向磁盘的操作命令&#xff0c;主要包括目录操作类命令、磁盘操作类命令、文件操作类命令和其它命令。 使用技巧 DOS命令不区分大小写&#xff0c;比如C盘的Program Files&…...

解决原生template标签在Vue中失效的问题

文章目录前言一、事件未绑定的原因二、如何处理原生template标签总结前言 需要原生Javascript three.js的数据标注平台加入Vue框架. 本来挺顺利的, 我直接在mounted周期做了初始化, 然后剩下的操作还是交给JavaScript文件执行, 最后发现里面有很明显的事件触发问题. 一、事件…...

节能降耗方案-医院能源管理系统平台的研究与应用分析

摘要&#xff1a;综合性医院作为大型公共机构&#xff0c;能耗高的问题日益突出&#xff0c;构建能耗监控平台对医院能耗量化管理以及效果评估已经成为迫切需要。建立智能能耗监控平台&#xff0c;对采集的能耗数据进行分析&#xff0c;实现对医院能耗平台监控&#xff0c;为医…...

Redis学习【7】之发布_订阅命令和事务

文章目录一 发布/订阅命令1.1 消息系统1.2 subscribe1.3 psubscribe1.4 publish1.5 unsubscribe1.6 punsubscribe1.7 pubsub1.7.1 pubsub channels1.7.2 pubsub numsub1.7.3 pubsub numpat二 Redis 事务2.1 Redis 事务特性Redis 事务实现2.1.1 三个命令2.1.2 基本使用2.2. Redi…...

MySQL8.0 optimizer_switch变化

Optimizer_switch变量是支持对优化器行为的控制。是一组值标志&#xff0c;每个标志都有一个on或off的值&#xff0c;以指示是否启用或禁用相应的行为。 MySQL8.0里除了熟悉的hash join重大变化之外&#xff0c;其他方面也有优化。 mysql> SHOW VARIABLES LIKE OPTIMIZER_…...

Web--Maven

1.maven管理项目的区别 2. 安装后&#xff0c;conf目录下的setting文件中&#xff0c;对本地仓库的配置 此处可替换成自定义的本地仓库地址&#xff0c;默认为c:/user/17860/.m2/repository(我的电脑上的&#xff09; 3.maven项目的标准目录结构 4.项目的生命周期 5.Maven概…...

深入理解MySQLⅢ -- 锁与InnoDB引擎

文章目录锁概述全局锁表级锁表锁元数据锁意向锁行级锁行锁间隙锁&临键锁InnoDB引擎逻辑存储结构架构内存结构磁盘结构后台线程事务原理redo logundo logMVCC锁 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#x…...

Win11电脑速度慢、延迟高怎么办?

作为新版的系统&#xff0c;Windows 11还需要更多的时间完善。不少用户反映升级了Win11后反而感觉速度慢&#xff0c;还有延迟或死机现象。 如果你使用Win11系统时也有这种感觉&#xff0c;那这篇文章就是为你提供的。 问题可能出在系统存储容量低、驱动程序已过时&#xff0…...

【双指针问题】977. 有序数组的平方

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…...

Meta AR眼镜主管:正开发史无前例的AR,但要解决很多困难

前不久&#xff0c;Meta CTO Andrew Bosworth在个人博客上“怒斥”公司内部不够专注&#xff0c;应该将资源投入在有核心竞争力、高投资回报率的业务上&#xff0c;而不是开发取悦用户却不赚钱的产品。尽管删除一些小众功能后&#xff0c;用户可能会不满&#xff0c;但为了让Me…...

Docker 搭建KingbaseES主备流复制

author: aming email: jikcheng163.com title: Docker 安装KingbaseES读写分离集群 creation_date: 2023-02-16 13:59 Last modified date: 2023-02-16 19:18 tags: Docker 安装KingbaseES读写分离集群 File Folder with relative path: reading notes/doc/Docker技术入门与实战…...

java易错题锦集四

effective java 不要再构造方法中启动任何线程 g new GameServer(); g.start();构造器无返回值&#xff0c;但是不能void修饰 字符串 String是包装类型吗&#xff1f;答案&#xff1a; 不是 对应的基本类型和包装类如下表&#xff1a; 基本数据类型 包装类 byte Byte bool…...

每天10个前端小知识 【Day 17】

前端面试基础知识题 1.使用原生js实现以下效果&#xff1a;点击容器内的图标&#xff0c;图标边框变成border:1px solid red&#xff0c;点击空白处重置 const box document.getElementById(box); function isIcon(target) { return target.className.includes(icon); } b…...

Python语言零基础入门教程(二十三)

16、Python os.fpathconf() 方法 概述 os.fpathconf() 方法用于返回一个打开的文件的系统配置信息。 Unix上可用。 语法 fpathconf()方法语法格式如下&#xff1a; os.fpathconf(fd, name)参数 fd – 打开的文件的描述符。 name – 可选&#xff0c;和buffersize参数和Pyt…...

[ansible系列]ansible使用扩展

目录 一. 本地执行 二. 任务委托 三. 任务暂停 四. 滚动执行 五. 只执行一次 六. 设置环境变量 七. 交互提示 一. 本地执行 我们知道ansible的是操作被控端的&#xff0c;所有执行的动作都是在被控端上完成的&#xff0c;当然在某些特定的时候我们想要有些tas…...

超简单做网站软件/搜索引擎优化师工资

前言&#xff1a; uni-app中方法整理之请求后台接口。个人封装版本与官方提供方法。 官方入口&#xff1a; 封装版本&#xff1a;目录见下 1、新建文件夹api&#xff0c;这里主要放接口信息 login.js 放登录页面的接口方法 import axios from ../util/http const Login {/…...

给你一个网站怎么做性能测试/seo优化神器

在IBatis中我们可以灵活的选择DAO类型&#xff0c;也就是可以在底层选用不同的数据库操作方式。有常规方式、配置文件的方式、Hibernet的方式等&#xff1a;1、常规方式和我们之前的ADO.NET开发较为类似&#xff0c;都是将sql语句写在cs代码中进行调用&#xff1a;首先通过配置…...

石家庄网站建设wsjz/外贸企业网站制作哪家好

摘要&#xff1a;本文讲解微软ASP.NET Web服务方法&#xff08;WebMethod&#xff09;是如何提供高效率的建立Web服务的途径的。WebMethod可以把传统的微软.NET方法暴露为Web服务操作&#xff0c;支持HTTP、XML、XML Schema、SOAP和WSDL。WebMethod&#xff08;.asmx&#xff0…...

php淘客网站开发/长沙官网seo收费

题目描述 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形&#xff0c;总共有多少种方法&#xff1f; 题目分析 &#xff08;参考牛客网Daniel Lee 分享的&#xff09;用归纳法归纳如下&#xff0c; &#xff08;1&#xff…...

做调查问卷赚钱的网站/网络营销产品策略

亲测可用&#xff0c;若有疑问请私信 错误信息&#xff1a; The nginx plugin is not working; there may be problems with your existing configuration. The error was: NoInstallationError() Certbot默认使用nginx的路径&#xff0c;需求如下配置 ln -s /usr/local/ngi…...

wordpress xiu底部广告/武汉百度推广外包

char c cv::waitKey(20);while (1)//读视频的循环{if(c ) { cv::waitKey(0);}if(cq | | cQ){break;}}...