Vue前端开发-pinia之Actions插件

Store中的Actions部分,用于定义操作属性的方法,类似于组件中的methods部分,它与Getters都可以操作State属性,但在定义方法时,Getters是对State属性进行加工处理,再返回使用,属于内部计算;Actions则是根据业务逻辑,操作State或Getters保存的值,方法中可以实现异步请求、调用任意的API,属于逻辑层部分。

一、 构建和执行Actions中方法

Actions属于Store中的一部分,因此,可以使用defineStore方法中Actions属性来构建某个业务逻辑,例如:在上一小节10.3.1基础上,构建两个Actions中的方法,一个名称为editCount,用于动态改变count的值,另一个名称为addGrade,用于动态添加grade属性的值,具体实现的代码如下所示:

import { defineStore } from "pinia";
export const schStore = defineStore("sch_id", {state: () => {return {name: "精英学校",count: 1200,grade: ['小学', '初中']}},getters: {},actions: {editCount(val) {this.count = val;},addGrade(val) {this.grade.push(val);}}
})

在上述代码的Actions属性加粗部分中,分别定义了两个方法editCount和addGrade,如果方法中需要传入其他参数,可以直接在方法中定义形参,如val,如果需要访问State中的属性,可以通过this对象直接访问属性名即可,如this.count和this.grade。

Actions属性构建完成后,如果需要在其他组件中调用,通常使用mapActions,将它的操作属性映射成组件methods中的一部分,实现代码如下所示:

<script>
import { mapState, mapActions } from 'pinia'
import { schStore } from "../../store/schStore";
export default {computed: {...mapState(schStore, ["grade", "count"])},methods: {...mapActions(schStore, ["editCount", "addGrade"])},mounted() {this.editCount(5);console.log(this.count);this.addGrade("高中");console.log(this.grade);}
}
</script>

在上述代码的加粗部分中,先通过导入的mapActions函数,将Actions属性映射成组件methods的成员,接下来,先调用editCount方法,由于传入的实参为5,因此,第一次在控制台输出值为5;再调用addGrade方法,传入实参为“高中”,因此,最后一次在控制台输出的内容为“小学”、“初中”、“高中”字样。

二、执行异步请求

Actions属性中还可以定义执行异步请求的方法,由于异步请求时,无法及时同步State属性值,因此,通常将异步请求的方式使用async和await语句改成同步请求,例如:使用异步请求的方式,修改State中的name属性值,代码如下:

import { defineStore } from "pinia";
import axios from "axios";
export const schStore = defineStore("sch_id", {state: () => {return {name: "精英学校",count: 1200,grade: ['小学', '初中']}},getters: {},actions: {async ajaxEditName() {
const res = await axios
.get("http://rttop.cn/api/?day=1-1");this.name = res.data;}}
})

在上述加粗代码中,为了实现异步请求,先导入axios模块,然后在Actions属性中定义一个名称为ajaxEditName的方法,用于发送指定的请求地址,并将请求返回的结果更新name属性值,该方法在组件中调用的代码如下所示:

<script>
import { mapState, mapActions } from 'pinia'
import { schStore } from "../../store/schStore";
export default {computed: {...mapState(schStore, ["name"])},methods: {...mapActions(schStore, ["ajaxEditName"])},async mounted() {console.log(this.name)await this.ajaxEditName();console.log(this.name)}
}
</script>

在上述代码的加粗部分中,先将ajaxEditName方法利用mapActions 函数映射成组件中methods的一个成员,然后在mounted事件中,先输出name的属性值,由于此时还没有更新name值,因此,第一次输出为name的初始值“精英学校”。

当使用await语句执行ajaxEditName方法时,必须等待异步请求完成,并更新name属性值后才能执行下一条输出语句,因此,当第二次执行输出name属性值时,已完成了数据和请求和更新,所以,第二次输出的值为请求返回值“hello”。
在这里插入图片描述

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

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

相关文章

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (下)

今天小李哥将开启全新的技术分享系列&#xff0c;为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来生成式 AI 安全市场正迅速发展。据IDC预测&#xff0c;到2025年全球 AI 安全解决方案市场规模将突破200亿美元&#xff0c;年复合增长率超过30%&#xff0c;而Gartn…

一个开源 GenBI AI 本地代理(确保本地数据安全),使数据驱动型团队能够与其数据进行互动,生成文本到 SQL、图表、电子表格、报告和 BI

一、GenBI AI 代理介绍&#xff08;文末提供下载&#xff09; github地址&#xff1a;https://github.com/Canner/WrenAI 本文信息图片均来源于github作者主页 在 Wren AI&#xff0c;我们的使命是通过生成式商业智能 &#xff08;GenBI&#xff09; 使组织能够无缝访问数据&…

JAVA架构师进阶之路

JAVA架构师进阶之路 前言 苦于网络上充斥的各种java知识&#xff0c;多半是互相抄袭&#xff0c;导致很多后来者在学习java知识中味同嚼蜡&#xff0c;本人闲暇之余整理了进阶成为java架构师所必须掌握的核心知识点&#xff0c;后续会不断扩充。 废话少说&#xff0c;直接上正…

java程序员面试自身优缺点,详细说明

程序员面试大厂经常被问到的Java异常机制问题,你搞懂了吗运行时异常:运行时异常是可能被程序员避免的异常。与检查性相反,运行时异常可以在编译时被忽略。错误(ERROR):错误不是异常,而是脱离程序员控制的问题。错误通常在代码中容易被忽略。例如:当栈溢出时,一个错误就发生了,它…

C++六大默认成员函数

C六大默认成员函数 默认构造函数默认析构函数RAII技术RAII的核心思想优点示例应用场景 默认拷贝构造深拷贝和浅拷贝 默认拷贝赋值运算符移动构造函数&#xff08;C11起&#xff09;默认移动赋值运算符&#xff08;C11起&#xff09;取地址及const取地址操作符重载取地址操作符重…

Java 2024年面试总结(持续更新)

目录 最近趁着金三银四面了五六家公司吧&#xff0c;也整理了一些问题供大家参考一下&#xff08;适合经验三年左右的&#xff09;。 面试问题&#xff08;答案是我自己总结的&#xff0c;不一定正确&#xff09;&#xff1a; 总结&#xff1a; 最近趁着金三银四面了五六家公…

防火墙的安全策略

1.VLAN 2属于办公区;VLAN 3属于生产区&#xff0c;创建时间段 [FW]ip address-set BG type object [FW-object-address-set-BG]address 192.168.1.0 mask 25 [FW]ip address-set SC type object [FW-object-address-set-SC]address 192.168.1.129 mask 25 [FW]ip address-se…

工作流项目BPMN.JS_Question梳理

工作流项目 想了解如果候选人熟悉工作流技术、bpmn.js和Flowable工作流引擎&#xff0c;面试官会对哪些信息感兴趣。我需要分析这个问题&#xff0c;并给出一个全面而结构化的回答。 首先&#xff0c;用户可能希望了解作为前端面试官&#xff0c;应该关注候选人哪些方面的知识和…

windows下搭建鸿蒙OS应用开发环境

一、前言 HUAWEI DevEco Studio 是华为推出的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于开发基于华为鸿蒙操作系统&#xff08;HarmonyOS&#xff09;的应用。作为华为开发者工具的核心之一&#xff0c;DevEco Studio 提供了一个多功能的开发平台&…

MacBook Pro(M1芯片)Qt环境配置

MacBook Pro&#xff08;M1芯片&#xff09;Qt环境配置 1、准备 试图写一个跨平台的桌面应用&#xff0c;此时想到了使用Qt&#xff0c;于是开始了搭建开发环境&#xff5e; 在M1芯片的电脑上安装&#xff0c;使用brew工具比较方便 Apple Silicon&#xff08;ARM/M1&#xf…

Sqlserver DBCC Check 遇到Msg 3853报错涉及sys.columns和sys.objects信息不匹配的解决方法

对数据库CacheDBMSIntl执行DBCC checkcatalog(‘CacheDBMSIntl’)时遇到报错如下 Msg 3853, Level 16, State 1, Line 7 Attribute (object_id1071830442) of row (object_id1071830442,column_id1) in sys.columns does not have a matching row (object_id1071830442) in sy…

VUE之组件通信(二)

1、v-model v-model的底层原理&#xff1a;是:value值和input事件的结合 $event到底是啥&#xff1f;啥时候能.target 对于原生事件&#xff0c;$event就是事件对象 &#xff0c;能.target对应自定义事件&#xff0c;$event就是触发事件时&#xff0c;所传递的数据&#xff…

P2036 [COCI 2008/2009 #2] PERKET(dfs)

#include<bits/stdc.h> using namespace std;int n; int a[15],b[15]; int ansINT_MAX; // 初始化最小差值为一个很大的数&#xff0c;保证能找到最小值void dfs(int i,int s,int k){if(in){ // 当遍历完所有元素时if(s1&&k0) return;int difabs(s-k);ans mi…

论文解读:《基于TinyML毫米波雷达的座舱检测、定位与分类》

摘要 本文提出了一种实时的座舱检测、定位和分类解决方案&#xff0c;采用毫米波&#xff08;mmWave&#xff09;雷达系统芯片&#xff08;SoC&#xff09;&#xff0c;CapterahCAL60S344-AE&#xff0c;支持微型机器学习&#xff08;TinyML&#xff09;。提出了波束距离-多普勒…

ORB-SLAM2源码学习:KeyFrame.cc④: void KeyFrame::UpdateBestCovisibles更新最佳共视

前言 在添加新连接之后就要重新对所有的共视关键帧和权重的那两个列表重新进行降序排列&#xff0c;这样非常容易知道列表的第一位就是最佳共视关键帧和权重。 总的来说就是只要权重发生了变化就要调用这个函数来修改mvpOrderedConnectedKeyFrames共视关键帧和mvOrderedWeigh…

尚硅谷课程【笔记】——大数据之Shell【一】

课程视频&#xff1a;【【尚硅谷】Shell脚本从入门到实战】 一、Shell概述 为什么要学习Shell&#xff1f; 1&#xff09;需要看懂运维人员的Shell程序 2&#xff09;偶尔编写一些简单的Shell程序来管理集群、提高开发效率 什么是Shell&#xff1f; 1&#xff09;Shell是一…

ES6 对象扩展:对象简写,对象属性 表达式,扩展运算符 ...,Object.assign,Object.is,用法和应用场景

1. 对象属性简写 1.1 基本语法 // 传统写法 const name John; const age 25; const user {name: name,age: age };// ES6 简写语法 const user {name,age };1.2 实际应用场景 // 1. 函数返回对象 function createUser(name, age, email) {return {name,age,email}; }// …

【2025】camunda API接口介绍以及REST接口使用(3)

前言 在前面的两篇文章我们介绍了Camunda的web端和camunda-modeler的使用。这篇文章主要介绍camunda结合springboot进行使用&#xff0c;以及相关api介绍。 该专栏主要为介绍camunda的学习和使用 &#x1f345;【2024】Camunda常用功能基本详细介绍和使用-下&#xff08;1&…

Java进阶学习之路

Java进阶之路 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 Java进阶之路前言一、Java入门 Java基础 1、Java概述 1.1 什…

JAVA安全—反射机制攻击链类对象成员变量方法构造方法

前言 还是JAVA安全&#xff0c;哎&#xff0c;真的讲不完&#xff0c;太多啦。 今天主要是讲一下JAVA中的反射机制&#xff0c;因为反序列化的利用基本都是要用到这个反射机制&#xff0c;还有一些攻击链条的构造&#xff0c;也会用到&#xff0c;所以就讲一下。 什么是反射…