Vue3——vuex的使用——axios网络请求的使用

news2025/7/11 2:10:44

vuex作用:用来集中式管理数据

集中式的应用,当前有四个组件A,B,C,D,假如现在有一个数据x在A里面,现在其他三个组件都要用到x并且好要修改x的时候,有一种方法就要用到全局事件总线,如下图所示

 像上面这样不够简练,因此出现了vuex这个东西,vuex就是专门用来存储一些经常要用到的数据,相当于一个公共的数据区域,所有组件都可以访问修改。

vuex工作原理图 

其中components就是相当于是顾客,action就是相当于是服务员,mutation就是后厨,state相当于是(全局数据),每一次组件会有对全局数据修改请求就会先进行派遣比如要对sum加上5,会发送这么一个东西(add,2)到action(服务员)处,由action提交到mutation(后厨处),mutation会对state(数据)进行加工,最后state会自动呈现到components(顾客)处。

vuex由三个部分组成,其中actions和mutation和state的数据类型都是对象,这三个东西都要经过一个store()的领导,图中dispatch和commit都是store.dispatch和store.commit

actions会连接到另一个服务器请求数据。

所有业务逻辑都要写到action里面,如果没有业务逻辑也可以直接和mutation对话

 一下以一个例子做vuex的演示

上图逻辑如下

在安装vuex插件后会多出一个store,里面应该配置如下所示,store会暴露给所有的组件的每一个组件都可以使用this.$store.加上commit或是dispatch去对应相应的活动流程。

 在上上图的4个button分别绑定了如下所示的四个函数,其中前两个是直接跨过action和mutation对话,所以是使用commit和ADD以及JIAN 

store配置 

context:上下文?可以找到很多信息?

可以看见state里面是存在一个全局数据sum,在mutation里面有两个加工操作,ADD和JIAN,单纯的加和减,在action才是实现了两个按钮的业务逻辑,

vuex中一个新的配置项getters

getters作用:根据state中的值计算新的值 

应用场景:当我们显示当前的和的10倍时,或是需要需要做一些别的计算时,我们有很多种方法可以去实现,watch,computed....,但是当逻辑变的复杂且复用变多了就需要每一个组件里面都写,更麻烦了,这时候就可以用上getters

store中配置,getters中的函数是可以得到state作为参数的,里面的属性的值和comouted一样需要由返回值来确定。

组件里面就可以直接的调用store里面的getters中的bigsum获取数据,state和getters如同vue里面的data和comouted。

注意点:

1.在模板里面访问state不用加this,在js里面访问state则需要加this

2.在context里面,我们可以看见是可以访问到state的,里面也有sum,但是我们也不能直接在action里面的对state进行更改,因为这样做会使得开发者工具失效,开发者工具始终监视着mutation,活动不经过mutation而是直接修改state的话不方便开发者工具调试。

vuex代码优化

在上面的例子中,模板里面要用到数据都要家伙是哪个一连串的前缀,不符合模板语句要简洁的思想,想要直接用写sum和bigsum表示和以及大和需要用到一个新的配置项叫做maostate用来映射状态(数据)。

在comouted里面用到一个mapSteta的对象类型数据,这个是vuex已经封装好的一个东西,用之前需要先进行引入

对象写法

上面mapState是一个对象类型的数据,computed也是一个对象,一般是不能在一个对象里面写另一个对象数据的,但这里用到了es6的新语法,'...',这三个点的作用就是把mapState里面的对应的key和value都放到computed里面,mapSteate会自动生成绑定数据 

数组写法

  这里写成数组形式里面的sum有两个含义,既可以用来做变量名,也是做state里面的数据名从state里面的取数据。

以上就是使用mapState的方式

同理,从getters里面读数据也有一个专门的配置项叫做mapGetters,用法和上面的一模一样,这里不再过多赘述

 

既然state和gettters有优化,那么actions和mutations也会有优化

mutations和Actions代码优化

以求和的例子来讲,和上面的基本一样,需要设定方法名和找到store中的方法名,但是还有一个value需要传,这个就写到template里面。对象写法和数组写法推荐用对象写法,因为数组写法里的元素需要直接写store里面的参数名字

 modules的使用(将来在开发中的地位其重要)

作用:定义state的子模块

需要有一个新东西叫做namespaced(命名空间),不同模块的共享数据由不同的modules组成,不同的子模块要专门开一个新的文件来放,这一块的视频因为过于繁杂,建议以后复习直接看视频吧

116_尚硅谷Vue技术_vuex模块化+namespace_2_哔哩哔哩_bilibili

 

另外,找到一个好东西axios网络请求

axios使用

store里面的配置,放在actions里面,每一次请求成功都会去调用放在mutations里面的ADD_PERSON方法添加一个新的对象

组件部分代码

两个按钮分别绑定不同的事件,一个是直接到mutation里找,一个是通过actions去网上找

 最后效果如下:

用来接收网络请求的网址:

https://api.uixsj.cn/hitokoto/get?type=social 

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

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

相关文章

用于生成随机曲面的Matlab程序(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 本文在总结、分析现有随机图形生成方法的基础上,结合自由形状的造型技术、自适应神经网络的自适应学习机理&#x…

科研人快速入门LaTex到日常使用,下载安装配置,语法使用说明等

1 前言 Latex是一款开源免费并且应用相当广泛的排版工具,被⼴泛运⽤在各个⾏业,⽐如学术界、出版界。LaTeX 和 Word 相比,LaTeX 入门者更能写出漂亮的文档。它不但能对文字、公式、图片进行精确而复杂的排版,并且还能保证全文各个…

【OpenFeign】【源码+图解】【四】FeignClient实例工具类ReflectiveFeign

【OpenFeign】【源码图解】【三】FeignClient的配置信息 目录5. FeignClient实例工具类ReflectiveFeign5.1 增强Builder属性5.1.1 Capability5.2 创建ReflectiveFeign5. FeignClient实例工具类ReflectiveFeign 上文中调用了targeter.target(this, builder, context, target)&a…

【GO】 K8s 管理系统项目[API部分--Node]

K8s 管理系统项目[API部分–Node] 1. 接口实现 service/dataselector.go type nodeCell corev1.Nodefunc(n nodeCell) GetCreation() time.Time {return n.CreationTimestamp.Time }func(n nodeCell) GetName() string {return n.Name }2. Node功能 service/node.go 2.1 重…

基于Servlet 的Java Web项目的CSRF防御概念

本篇创建一个基本的Jave Web 项目, 使用Servlet提供服务, 使用Filter 处理CSRF防御。 演示环境 Java 1.8.0_211Eclipse 2021-06 (4.20.0)Maven 3.6Servlet 创建与运行 在Eclipse 中创建一个简单的Maven 项目, 项目名为 java-web,如下图: 创建完成的项目目录结构如下: 创…

pre compile header

预编译头文件存在的目的是减少一个项目中不经常改动的文件的编译次数; 打个比方:c标准库,当我们在项目中调用一个c标准库的时候,这个库一般是只读的,所以我们没必要每次编译项目的时候都recompile c标准库&#xff1b…

预约挂号系统技术点详解(二)

一、微服务间服务的调用介绍 1. 需求(医院接口远程调用数据字典) service-hosp服务调用service-cmn服务 2. 实现步骤 ⑴ 搭建service-client父模块 修改pom文件,添加需要使用的model模块和工具模块依赖,并添加openfeign依赖 …

Python学习笔记-PyQt

记述PyQt的相关基本知识。 一、PyQt概述 PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是最强大的库之一。PyQt是由Phil Thompson 开发。 PyQt实现了一个Python模块集。它有超过300类,将近6000个函数和方法。它是一个多平台的工…

使用 kube-prometheus(release-0.6) 监控 Kubernetes v1.18.20

本文档是使用 kube-prometheus-stack[release-0.6] 来监控 kubernetes1.18.20,具体兼容性可以看这里:https://github.com/prometheus-operator/kube-prometheus/tree/release-0.6#kubernetes-compatibility-matrix 1 概述 1.1 在 k8s 中部署 Prometheus…

SpringBoot任务调度(官方案例)

在线文档项目结构 1.源码克隆:git clone https://github.com/spring-guides/gs-scheduling-tasks.git 2.包含两个项目initial和complete,initial可以根据文档练习完善,complete是完整项目 3.功能描述:构建应用程序,使用…

数据结构 - AVL树 (Adelson-Velsky and Landis Tree)

目录一、前言二、简介三、左旋与右旋四、AVL树的调整1、向AVL树中插入新数据1)LL型不平衡(右单旋转)2)RR型不平衡(左单旋转)3)LR型不平衡(左右双旋转)4)RL型不…

爆款短视频是怎样练成的:视频发布技巧,首次公开

剪辑好的优质短视频怎么发布才能成为爆款视频?短视频发布技巧公开 前面几篇我们讨论了短视频定位,怎么写文案脚本,怎么拍摄以及后期剪辑,至此我们一个优质的短视频已经制作完成,今天我们就聊一下下一个环节&#xff1…

Kafka Producer Retries Idempotence 原理

Kafka Producer Retries & Idempotence 原理 由于存在网络瞬时抖动;或者kafka集群短暂的不可用,会导致kafka producer发送消息出现异常,生产者无法将消息推送到topic,在这种情况下,消息丢失的可能性很高。因此kaf…

全排列思路

目录 省流版结论 推导过程 输出结果(元素数量为4时) 省流版结论 (程序来源:排列组合之——全排列(c语言)_rewrite!的博客-CSDN博客_全排列) 一晚上的时间,终于弄懂了。真羡慕计算…

基于标志点特征高精提取与匹配方法,进行双目、结构光、RGBD相机、单目相机多视拼接

1. 工作原理 人工张贴标志点变换位置拍照相邻照片的公共视野内有相同的标志点群匹配两张照片对应标志点对通过三对以上标志点对,实现两张照片间的坐标变换求解 2.标志点特征 圆形 分类: 编码(粘贴于被测物体表面):…

SpringBoot文件上传(官方案例)

在线文档项目结构 1.源码克隆:git clone https://github.com/spring-guides/gs-uploading-files.git 2.包含两个项目initial和complete,initial可以根据文档练习完善,complete是完整项目 3.功能描述:构建接受文件上传的应用程序&a…

转行人必看:数字IC前端设计学习路线与方法(内附学习视频)

众所周知,数字前端设计对于工程师的能力要求比较高,不仅有学历上的要求,还要求掌握很多的知识技能。不少跨专业想要转行的小伙伴对数字前端设计这个岗位不是很了解,下面IC修真院就带大家全面了解一下数字IC前端设计。 数字前端到…

酒水销售网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 网站前台:网站介绍、帮助信息、酒水资讯、酒水类型、酒水信息、购物分享 管理员: 1、管理网站介…

matlab源码说明

目录 1.MATLAB概述 2.MATLAB程序使用几个常规注意实现 2.1.运行过程可能出现Out of Memory的问题解决办法 2.2.保存大于2G的数据 2.3.程序运行方法 1.MATLAB概述 Matlab经过不断的发展和完善,如今已成为覆盖多个学科,是具有超强数值计算能力和仿真分析能力的软件。…

YOLOv5s.yaml文件解读

目录一、YOLOv5s.yaml内容二、详解2.1参数配置2.2 anchors2.3 backbone2.4 head三、如何调整模型一、YOLOv5s.yaml内容 YOLOv5配置了4种不同大小的网络模型,分别是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,其中YOLOv5s是网络深度和宽度最小但检测速度最快的…