创建定义store并使用组合式api、选项式api
在项目根目录创建store文件夹(此步骤和vuex相同)
在步骤一的store文件夹下根据不同的用途场景创建单独的store文件(等同于vuex中分模块)、

定义store基本步骤
步骤
- 导入defineStore()方法:
import {defineStore} from 'pinia' - 使用defineStore定义store并导出
import { defineStore } from 'pinia'
// 你可以对 `defineStore()` 的返回值进行任意命名,但最好使用 store 的名字,同时以use开头且以Store结尾。(比如 `useUserStore`,`useCartStore`)
// 第一个参数是你的应用中 Store 的唯一ID(因为pinia并没有vuex中模块的概念,每个文件就是单独一个模块了,所以id必唯一)。
// defineStore() 的第二个参数可接受两类值:Setup 函数或 Option 对象。
// 如果是一个对象,则可以使用选项式api来定义store(旧应用渐进式升级、vue2可使用这种方式,vue3建议用下面的组合式api方式)
// 如果是一个箭头函数,则可以使用组合式api来定义store,(推荐,因为vue3用的就是组合式api比较多。)
export const useAlertsStore = defineStore('alerts', {
// 其他配置...
})
定义store实例(组合式api)
定义一个用户相关的状态管理→store/user.js:
import {defineStore} from 'pinia'
import {ref} from 'vue'
// 你可以对 `defineStore()` 的返回值进行任意命名,但最好使用 store 的名字,
// 同时以 `use` 开头且以 `Store` 结尾。(比如 `useUserStore`,`useCartStore`,`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一ID(因为pinia并没有vuex中模块的概念,每个文件就是单独一个模块了,所以id必唯一)。
// 第二个参数如果是一个对象,则可以使用选项式api来定义store(旧应用渐进式升级、vue2可使用这种方式,vue3建议用下面的组合式api方式)
// 如果是一个箭头函数,则可以使用组合式api来定义store,(推荐,因为vue3用的就是组合式api比较多。)
export const useUserStore = defineStore('user', {
// 选项式 store的使用方法:
// state和vuex不太一样,必须要返回一个函数,vuex中是一个对象属性。
state: () => {
return {
count: ref(12),
num: ref(100)
}
},
// 定义getters方式类似vuex
getters: {
doubleCount: (state) => {
return state.count * 2
}
},
// 也是类似vuex
actions: {
increCount() {
// pinia中因为action相当于组合了mutiation和actions,所以可以直接修改state中的数据。
// 在选项式api中actions访问state中的数据,是用this来直接访问的。
this.count++
}
}
})
定义store实例(选项式api)
// 使用类似vue3中的组合式api方式定义store
export const useUserStore2 = defineStore('user2', () => {
// 直接定义变量就是等同于定义state,比如这里用ref()定义响应式数据
const money = ref(888)
// 定义方法就是等同于定义actions
const increMoney = (value) => {
money.value += value
}
// 定义computed计算属性就是等同于定义getters
const doubleMoney = computed(()=>{
return money.value * 2
})
// 使用选项式api,必须要返回,否则外面用不到。
return {
money,
increMoney,
doubleMoney
}
})
在vue中使用store
- 导入自己编写的store
// 1. 导入store
import {useUserStore, useUserStore2} from './store/user';
- 实例化并用变量接收
// 2. 创建store实例
const userStore = useUserStore()
const userStore2 = useUserStore2()
- 引用store变量中的state、getters、actions
<template>
<div>hello pinia</div>
<!-- 引用store中的state、actions、getters -->
<p>userStore中的数据:{{ userStore.count }}</p>
<p>userStore中的数据:{{ userStore.doubleCount }}</p>
<button @click="userStore.increCount">自增+1</button>
<hr>
<p>userStore2中的数据:{{ userStore2.money }}</p>
<p>userStore2中的数据:{{ userStore2.doubleMoney }}</p>
<button @click="userStore2.increMoney(10)">钱+10</button>
</template>
创建定义store并使用组合式api、选项式api的更多相关文章
- 通过beego快速创建一个Restful风格API项目及API文档自动化
通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...
- SharePoint在管理中心创建Secure Store
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012025054/article/details/35780063 SharePoint在管理中心 ...
- 通过beego快速创建一个Restful风格API项目及API文档自动化(转)
通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...
- 创建基于OData的Web API - Knowledge Builder API, Part IV: Write Controller
基于上一篇<创建基于OData的Web API - Knowledge Builder API, Part III:Write Model and Controller>,新创建的ODat ...
- ASP.NET Core Web API 开发-RESTful API实现
ASP.NET Core Web API 开发-RESTful API实现 REST 介绍: 符合REST设计风格的Web API称为RESTful API. 具象状态传输(英文:Representa ...
- Java8 流式 API(`java.util.stream`)
熟悉 ES6 的开发者,肯定对数组的一些方法不是很陌生:map.filter 等.在对一组对象进行统一操作时,利用这些方法写出来的代码比常规的迭代代码更加的简练.在 C♯ 中,有 LINQ 来实现.那 ...
- NET Web API和Web API Client Gen使Angular 2应用程序
使用ASP.NET Web API和Web API Client Gen使Angular 2应用程序的开发更加高效 本文介绍“ 为ASP.NET Web API生成TypeScript客户端API ” ...
- day71:drf:API接口&Restful API规范&Django Rest Framework&drf中的序列化和反序列化功能
目录 1.web应用模式 2.API接口 3.Restful API规范 4.序列化 5.Django Rest Framework 1.drf的简单介绍 2.drf的特点 3.如何安装drf 4.d ...
- lumen 构建api(dingo api)
什么是 API API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力, ...
- HTML5之本地文件系统API - File System API
HTML5之本地文件系统API - File System API 新的HTML5标准给我们带来了大量的新特性和惊喜,例如,画图的画布Canvas,多媒体的audio和video等等.除了上面我们提到 ...
随机推荐
- API接口技术的使用可以增加软件开发和运行的灵活性,降低软件运行和维护的成本
随着科技的发展和互联网的普及,越来越多的公司和企业把业务拓展到互联网上,这就需要用到API接口技术.API(Application Programming Interface,应用程序接口)是指不同软 ...
- QA|20221001|SecureCRT自动断开怎么办?
Q:SecureCRT自动断开怎么办? A:如下设置
- Kali-Linux-配置开发环境
本文主要讲解JDK.SDK.eclipse-adt.android studio.cpu模式TensorFlow 的安装配置.update:2019-08-30 03:31:46 JDK 当前系统jd ...
- Field 'xxxxxx' doesn't have a default value 错误的解决办法
在写web项目的时候,出现 Field 'xxxxx' doesn't have a default value 这个错误,直接找到你的数据库,然后打开设计表,看下面自增递增是否勾选上了,如果没有勾上 ...
- LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解
️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问. 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越 ...
- angular + express 实现websocket通信
最近需要实现一个功能,后端通过TCP协议连接雷达硬件的控制器,前端通过websocket连接后端,当控制器触发消息的时候,把信息通知给所以前端: 第一个思路是单独写一个后端服务用来实现websocke ...
- 入门篇-其之四-字符串String的简单使用
什么是字符串? 在Java编程语言中,字符串用于表示文本数据. 字符串(String)属于引用数据类型,根据String的源码,其头部使用class进行修饰,属于类,即引用数据类型. 字符串的表示 字 ...
- WebApi中添加Jwt鉴权
前言 JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息.一个 JWT 实际上就是一个字符串,它由三部分组成,头部.载荷与签 ...
- 其它——ASCII码,Unicode和UTF-8编码
文章目录 一 ASCII码 二 非ASCII编码 三 Unicode 3.1 Unicode存在的问题 3.2 它们造成的结果是 四 UTF-8 4.1 UTF-8 特点 4.2 UTF-8 的编码规 ...
- Django框架——forms组件、cookie与session
文章目录 1 forms 组件 1 校验字段功能 2 渲染标签功能 渲染方式1 渲染方式2 渲染方式3 3 渲染错误信息功能 视图 模板 4 组件的参数配置 5 局部钩子 6 全局钩子 2 cooki ...