Pinia基本使用示例

1. 定义Store【src\stores\counter.ts】。
(1). 组合式API写法。

import { ref, computed } from 'vue'
import { defineStore } from 'pinia'
export const useCounterStore = defineStore('counter', () => {const count = ref(0)const doubleCount = computed(() => count.value * 2)function increment() {count.value++}return { count, doubleCount, increment }
})

(2). 类似Vuex的写法。

import { defineStore } from 'pinia'export const useCounterStore = defineStore('counter', {state:()=>({count:0}), // 相当于 state:()=>{ return {count:0}; }。getters:{doubleCount:state=>state.count * 2,},actions:{increment(){this.count++;}}
})

2. 使用Store【src\views\ChildComponent.vue】。
(1). 组合式API写法。

<script setup>
import { useCounterStore } from '@/stores/counter'const counter = useCounterStore();function reset(){// 三种改变state的方法展示。counter.count=0; // 直接变更。// counter.$patch(state=>{state.count=0}) // 传入箭头函数来变更。// counter.$patch({count:0}) // 传入新的state对象来变更。
}
</script>
<template><div><div @click="counter.increment()">{{ counter.count }}、{{ counter.doubleCount }}</div><button @click="reset()">reset</button></div>
</template>

(2). 组合式API写法 中 使用解构语法。

<script setup>
import { storeToRefs } from 'pinia';
import { useCounterStore } from '@/stores/counter'const counter = useCounterStore();let { count,doubleCount } = storeToRefs(counter);
const { increment } = counter;function reset(){// 四种改变state的方法展示。count.value = 0; // 需要通过.value来改变响应式ref的值,这样写能够直接改变counter中state count的值。// counter.count=0;// counter.$patch(state=>{state.count=0}) // 传入箭头函数来变更。// counter.$patch({count:0}) // 传入新的state对象来变更。
}
</script>
<template><div><div @click="increment()">{{ count }}、{{ doubleCount }}</div><button @click="reset()">reset</button></div>
</template>

(3). 选项式API写法。

<script>
import {mapState,mapActions,mapStores} from 'pinia'; // mapGetters,
import {useCounterStore} from '@/stores/counter';
export default{computed:{...mapStores(useCounterStore), // 如果还有其它Stores要引入,那么就在useCounterStore后面加上“,其它Stores”。...mapState(useCounterStore,['count','doubleCount']), // mapState现在返回的接口 已经 包含getters了。// ...mapGetters(useCounterStore,['doubleCount']), // 已经不推荐使用mapGetters了。},methods:{...mapActions(useCounterStore,['increment']),reset(){this.counterStore.count = 0;// this.counterStore.$patch({count:0});// this.counterStore.$patch(state=>{state.count=0});}}
}
</script><template><div><div @click="increment()">{{ count }}、{{ doubleCount }}</div><button @click="reset()">reset</button></div>
</template>

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

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

相关文章

基于多源信息融合的巡飞弹对地目标识别与毁伤评估

源自&#xff1a;系统仿真学报 作者&#xff1a;徐艺博 于清华 王炎娟 郭策 冯世如 卢惠民 摘 要 面向利用多枚巡飞弹对地面高防御移动目标进行打击的任务场景&#xff0c;提出一种基于多源信息融合的巡飞弹对地移动目标识别与毁伤评估方法。基于IoU判定实现红外图像与可…

E2697A 安捷伦高阻抗适配器

181/2461/8938描述: E2697A高阻抗适配器允许将需要高阻抗输入的探头&#xff08;例如无源探头、电流探头&#xff09;连接到Infiniium 54850、80000和90000系列高性能示波器。E2697A高阻抗适配器扩展了Agilent Infiniium高性能示波器的功能&#xff0c;使其成为电源、逆变器、…

数据挖掘

一.数据仓库概述&#xff1a; 1.1数据仓库概述 1.1.1数据仓库定义 数据仓库是一个用于支持管理决策的、面向主题、集成、相对稳定且反映历史变化的数据集合。 1.1.2数据仓库四大特征 集成性&#xff08;Integration&#xff09;&#xff1a; 数据仓库集成了来自多个不同来源…

2403d,d解析c++符号

原文 这里有个简单的无需更改动态库或应该动态链接到它的DMD项目中源码的方法.当然,并不能解决潜在的C调用约定问题(C不存在),但可在有它们时再调查. 我做了个小小的概念证明,它有效.为了具体起见,假设动态库是libx.dll,使用安装了最新MSYS2的(mingw64)gcc构建它,因为这是我需…

闭包的理解和使用场景

文章目录 一、是什么二、使用场景柯里化函数使用闭包模拟私有方法其他 三、注意事项 一、是什么 一个函数和对其周围状态&#xff08;lexical environment&#xff0c;词法环境&#xff09;的引用捆绑在一起&#xff08;或者说函数被引用包围&#xff09;&#xff0c;这样的组…

2024-03-10 c++

&#x1f338; MFC下拉框控件 | Combo Box eg 计算器 1。新建MFC项目&#xff08;基于对话框、静态库&#xff09; 2。添加控件&#xff0c;删除初始的3个多余控件 加3个edit control 加1个combo box&#xff0c;属性sort改为false&#xff0c;data为 ;-;;;% 加1个static text…

数据可视化引领工业智能化时代的浪潮

随着工业数字化的迅速发展&#xff0c;数字孪生技术作为一项新兴技术&#xff0c;正日益受到工业界的关注和应用。数字孪生是将实际物理对象或过程与其数字化模型相连接的先进技术。通过数字孪生&#xff0c;工业企业可以在虚拟世界中模拟和测试现实世界的产品和生产过程&#…

C++ 指针和引用引用详解

C 指针和引用是两种非常重要的概念&#xff0c;它们在内存操作中起着至关重要的作用。在这篇文章中&#xff0c;我们将深入探讨C指针和引用的基本概念、分类、转换方法、应用场景以及相关的问题与陷阱。 1. 指针的基本概念和分类 1.1 指针的概念 指针是一个变量&#xff0c;…

「CISP考试1000题精讲」CISP练习题中的6道题精讲

第一题 Kerberos 协议是一种集中访问控制协议。它能在复杂的网络环境中,为用户提供安全的单点登录服务。单点登录是指用户在网络中进行一次身份认证,便可以访问其授权的所有网络资源,而不再需要其他的认证过程,实质是消息 M 在多个应用系统之间的传递或共享。其中消息 M 是…

js 添加、删除DOM元素

1. js添加、删除DOM元素 1.1. 添加DOM元素 1.1.1. appendChild()方法 该方法添加的元素位于父元素的末尾&#xff0c;使用方法&#xff1a; parentNode.appenChild(NewNode) // parentNode是需要添加元素的容器&#xff0c;NewNode是新添加的元素   创建一个li元素并添加到…

系统分析师论文总结【持续更新】

2024年3月4日&#xff0c;新的软考规则出来&#xff0c;高项改为一年一次&#xff0c;架构师改为一年两次。 下半年考试安排&#xff0c;如下图&#xff08;来源官网&#xff09; 收集整理系统分析师论文&#xff0c;方便备查。 一、2010年论文 1、论软件维护及软件课维护性…

【STM32】HAL库 CubeMX 教程 --- 高级定时器 TIM1 定时

实验目标&#xff1a; 通过CUbeMXHAL&#xff0c;配置TIM1&#xff0c;1s中断一次&#xff0c;闪烁LED。 一、常用型号的TIM时钟频率 1. STM32F103系列&#xff1a; 所有 TIM 的时钟频率都是72MHz&#xff1b;F103C8不带基本定时器&#xff0c;F103RC及以上才带基本定时器。…

现代DevOps如何改变软件开发格局

在软件开发的早期&#xff0c;该过程通常是开发人员编写代码&#xff0c;再将其交给质量保证&#xff08;QA&#xff09;进行测试。这种瀑布开发方法可能会导致质量问题和延迟&#xff0c;因为问题是在周期后期发现的。 一、了解DevOps和测试左移 DevOps是Development和Opera…

汉字转拼音

汉字转拼英——简单实现 依赖 <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version> </dependency>汉字转拼音方式1&#xff1a; import net.sourceforge.pinyin4j.Pin…

CloudStack 中 op_host_capacity 表中的 capacity_type 取值详解

在 Apache CloudStack 中&#xff0c;op_host_capacity 数据表是用于记录云平台中主机资源容量的关键表之一。该表中的 capacity_type 字段是一个重要的属性&#xff0c;它标识了不同类型的基础架构资源。下面我们将详细解析 op_host_capacity 表中 capacity_type 的各种取值及…

2k_Day2:今天是springMVC和mybatisPlus的大白话

1.我感觉&#xff0c;springboot把配置搭好了&#xff0c;就能写业务增删改查&#xff0c;然后盯好dao、service、impl、controller就好了&#xff0c;其他的事&#xff0c;用到时才会再去配置&#xff0c;不是吗&#xff1f; 2.使用mybatisplus时&#xff0c;它有很多方法&am…

解决Gradle下载过慢问题的有效方式:使用国内镜像站点

前言 在开发过程中&#xff0c;我们经常会遇到Gradle下载速度缓慢或超时的问题。作为一个强大而流行的构建工具&#xff0c;Gradle是许多项目中必不可少的一部分。然而&#xff0c;由于官方下载地址可能受网络限制影响&#xff0c;导致下载速度较慢。针对这个问题&#xff0c;…

【题解】—— LeetCode一周小结10

【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结9 4.用栈实现队列 题目链接&#xff1a;232. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a…

基于ACM32 MCU的电动滑板车方案了,助力低碳出行

随着智能科技的快速发展&#xff0c;电动滑板车的驱动系统也得到了长足的发展。国内外的电动滑板车用电机驱动系统分为传统刷式电机和无刷电机两种类型。其中&#xff0c;传统的刷式电机已经逐渐被无刷电机所取代&#xff0c;无刷电机的性能和寿命都更出色&#xff0c;已成为电…

springboot集成 mongodb以及mongodb简单工具类

前言 springboot集成 mongodb 有开箱即用的starter 因此集成还是很方便的 集成 添加依赖 <!--mongodb--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId> </d…