【Vue】VueX 的语法详解(3)

news2024/11/18 3:19:39

在VueX(叉)里面有一个潜移默化,或者说本质上的一个约束是什么?
mutation里面只允许‍‍写同步代码,不允许写‍‍异步代码,虽然它不强制的限制你说你写了就给你报错,但实际上它的设计里面要求‍‍你的 mutation改数据这块不能有异步的操作。

那么如果我非得有异步的操作怎么办?
这个时候‍‍ action就有效了,action帮助我们做一件什么样的事情?

比如说我们代码就可以这么去写了,‍‍首先我就不去提交 commit 调用mutation了,
我去调用dispatch这个方法,发送一个叫做‍‍ change action出去,这个action会给到谁?

是不是这块action就接收到了:

接收到之后在这里‍‍我可以去写异步的操作,setTimeout,然后我写一个两秒,‍‍两秒之后去派发一个限制修改的请求,
这个请求会调用mutation,调用 mutation之后 mutation 再去改变代码,‍‍

这样的话我们就把异步操作放到actions里面来做了,mutation就是一个同步的逻辑,‍‍

回到页面上,我们再刷新,点击,一秒两秒还是会变成lee:

mutation就符合要求了,ta就没有异步的代码,只有同步的代码了。‍‍

所以在 Vue 里面去做 VueX(叉)的设计的时候,actions里面也一般会要求我们放一些异步的代码,‍‍而mutations里面放同步的代码。‍‍

这就是‍‍我们去使用 VueX(叉)的一个逻辑。

首先你怎么定义数据,在state里面定义数据。

如果你想对数据做修改怎么修改?‍‍
比如说一个异步的修改,
首先你调一个dispatch方法,‍‍你可以传一个change过去,

当然你除了传一个 action的名字,你还可以传它的一些数据,比如说‍‍我想把之前的 dell改成hello world,

我可以把hello world传过去,‍‍
那么在 actions里面我就可以接收到你传递过来的 payload,或者说你传递过来的叫一个str‍‍,

然后我隔两秒之后我要去触发修改,我触发修改的时候依然触发 change的修改,‍‍
然后我把 str 再往下带一层,
那么change也能接收到 str,

然后你可以把this点state点name直接改成这个str就可以了:

保存一下,我们回到页面上刷新,‍‍点击一秒两秒它会 有一个问题:

说 name closes the circle,我们看一下这块哪里写错了:

这样写就没有任何的问题。‍‍

我们可以再简化一下我们的代码,既然我们说第一个参数是store,‍‍那么下面我就可以不用 this.commit了,我可以直接就store.commit,‍‍

然后上面我也可以不用this点state了,我直接用store点state点name等于str‍‍,

我们再回到页面上,刷新点击,一二,当然它说name of undefined:

这样写就对了:

modules 实际上是更复杂的一个对store进行局部拆分的一个功能点。

整体来回顾一下VueX(叉)的使用方式。‍‍
VueX(叉)实际上就是把‍‍整个应用里面要共用的一些数据存在这里面来,

首先我们要创建一个store,‍‍怎么创建?

通过createStore这个方法创建就行了,数据我们放在state里面去,当我放到state里面之后,‍‍在我的组件里面,我就可以通过计算属性,

直接通过this点到store点state获取到这些数据。‍‍

当然如果你想要改数据要怎么改呢?‍‍
首先你要定一个方法,当点击某些文字的时候,我要改数据,我怎么改?

第一步先派发一个action,你派发action‍‍叫做change这样一个名字的action,

这个action会被VueX(叉) store里面的actions接收到,‍‍
你派发了一个叫做change的action,那么change这个方法就会执行,

执行这里面写异步的逻辑,两秒之后‍‍我要想改数据了,怎么改数据?

我不能在action里面直接改,我必须要再派发一个commit这样的‍‍修改的请求,派发了叫做change的修改请求之后,‍‍

mutations会感知到change的请求,正好它有个change的方法就会执行,

这个方法执行的时候‍‍就会在这里面去直接改变state里的数据,也是只有mutations能改state里面的数据,‍‍

而且mutation必须是一个同步的代码。‍‍

如果说我现在想改数据不需要异步的操作,‍‍我可以怎么写?

我可以在这里就不写action了,我在这里也可以直接不写 despatch方法了,直接commit也可以。‍‍

commit一个change这样的请求里面带一个hello world,‍‍

这边也能去感知到你change的请求:

然后去‍‍感知到你传过来的 hello world 对数据做一个修改。

so,dispatch方法是和action做关联的,‍‍而commit这个方法 是和 mutation做关联的。

为什么要有这么复杂的一个数据流程?
是因为当我们去这么写数据修改的代码的时候,
我们可以‍‍把我们对数据修改的异步逻辑都封装在action里面去管理,‍‍
把对数据修改的同步逻辑都封装在mutations里面去管理。‍‍

当未来我们想查到底是哪里改了数据的时候,
我们直接到store里面去看mutation和action就可以了。‍‍

否则的话你对数据的修改会散落在各个的组件里面来。‍‍

这个时候我们想查到底是哪块改的代码,导致我的数据有问题,我们去查错的时候会变得很复杂。‍‍

所以虽然我们现在发现写法上比较复杂,但未来‍‍真正我们写完代码再去做维护的时候,
会发现用VueX(叉)的这种强制性的规范,‍‍写出了代码未来去做维护的时候会方便一些,更便捷一些。

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

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

相关文章

2022跨境出海:中东地区网红营销现状及特点

提到中东,大家的第一印象可能就是“头顶一块布,天下我最富”的土豪形象,近期的卡塔尔世界杯也再次给外界展示了他们的壕无人性。但由于宗教影响,他们的很多线下交际活动受到限制,也使得他们在互联网世界十分活跃&#…

申报须知,2022年滁州市各区县高新技术企业奖励政策变化,明光市

为了帮助企业提前准备和更好地开展2023年高新技术企业认定申报工作,安徽省大力鼓励企业申报高新技术企业,相应出台了相关政策,同时对于高企申报也有很多奖补,下面小编汇总了滁州市琅琊区、南谯区、天长市、明光市、来安县、全椒县…

jq扩展机制

1、在$挂上自定义函数方法&#xff1a; 如果想自定义函数方法&#xff0c;而且能通过$调用&#xff0c;那就需要用到extend&#xff08;&#xff09;方法&#xff1b;格式&#xff1a;$.extend({}) ; <script>$.extend({yiyi:function(){console.log("yiyi")}…

唯亚威VIAVI FI-60光纤识别器

光纤识别器可以轻松地识别光信号&#xff0c;而无需断开光缆或中断网络交通。也可以转换为光功率计&#xff08;OPM&#xff09;。 VIAVI FI-60 LFI能够使用户轻松检测光信号&#xff0c;而无需断开光缆或中断网络交通。FI-60 LFI还包括了独特的VIAVI SafeChekTM &#xff0c;…

特种劳动防护用品安全标志证书

特种劳动防护用品安全标志是确认特种劳动防护用品安全防护性能符合国家标准、行业标准,准许生产经营单位配发和使用该劳动防护用品的凭证。特种劳保用品是指在劳动作业生产过程中对人体起到保护作用的安全防护用品,与之对应的是普通劳保用品,如防护眼镜、劳保鞋等。常见的特种劳…

springboot入门

目录 1. 简介 2. 开发示例 2.1 创建springboot工程 3. 启动类 4. 常用注解 5. springboot配置文件 6. 开发一个controller 1. 简介 Spring Boot它本身并不提供Spring框架的核心特性以及扩展功能&#xff0c;只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。 同…

英语语法学习

文章目录第一章 a\an的用法第二章 复数代词及复数名词的用法第三章 形容词的用法第四章 一般疑问句的用法第五章 Yes\No的用法第六章 人称代词的所有格式第七章 What疑问句与专有名词第八章 Why疑问句的用法第九章 Every的用法第十章 连词Because的用法第十一章 Who疑问句的用法…

基于Java+JSP+MySQL基于SSM的智能推荐商城系统-计算机毕业设计

项目介绍 本文的主要工作是对基于B/S模式及JSP技术的基于智能推荐的b2c销售网站进行了研究与设计。本文首先介绍了基于智能推荐的b2c销售网站的背景&#xff0c;分析比较了国内外相关基于智能推荐的b2c销售网站的运行模式、系统特点与开发技术。然后分析了目前热点的各种Web应…

基于PHP+MySQL的物流配送管理系统平台

随着时代的发展,物流显得越来越重要。尤其是在网购这样的大环境冲击之下基本上物流已经充满了我们生活的每一个角落。尽管如此,但是对于那种大型的货物和车辆,仍然没有一个很好的信息共享平台。经常会出现出主找不到货源,货主找不到车源的情况。车主和货主之间形成了严重的信息…

脑啡肽 (2-4)、Enkephalin (2-4)、6234-26-0

脑啡肽 (2-4)、GGF 可刺激 SK-N-SH 细胞对 deltorphin 的摄取。 Enkephalin (2-4), GGF, stimulated the uptake of deltorphin in SK-N-SH cells.编号: 127373 中文名称: 脑啡肽 (2-4)、Enkephalin (2-4) 英文名: Enkephalin (2-4) CAS号: 6234-26-0 单字母: H2N-GGF-OH 三字母…

【Hack The Box】windows练习-- Sauna

HTB 学习笔记 【Hack The Box】windows练习-- Sauna &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月7日&#x1f334; &#x1f3…

SpringSecurity(八)【RememberMe记住我】

八、RememberMe 简介 RememberMe 这个功能非常常见&#xff0c;无论是在 QQ、邮箱…都有这个选项。提到 RememberMe&#xff0c;往往会有一些误解&#xff0c;认为 RememberMe 功能就是把 用户名/密码 用 Cookie 保存在浏览器中&#xff0c;下次登陆时不用再次输入 用户名/密码…

正点原子开拓者FPGA,程序固化下载到板子里面

者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&…

XCode内存和UnityProfiler内存有较大差值

1&#xff09;XCode内存和UnityProfiler内存有较大差值 ​2&#xff09;Dynamic Bone插件和Job System的写法哪个好 3&#xff09;编辑器中iOS平台SoftShadow无效 4&#xff09;Unity 2021中阻止AssetPostprocessor代码改变导致相关资源Reimport 这是第313篇UWA技术知识分享的推…

用DIV+CSS技术设计我的家乡网站(web前端网页制作课作业)南宁绿城之都

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

大一学生《web课程设计》用DIV+CSS技术设计的个人网页(网页制作课作业)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

视频打马赛克并追踪

每天一个PS/PR小技巧&#xff08;原理实践&#xff09;见&#xff1a; 每天一个PS/PR小技巧&#xff08;原理实践&#xff09;_Dezeming的博客-CSDN博客PS是由Adobe Systems开发和发行的图像处理软件。本文的特色在于快速上手和制作一些生活中会常用的功能&#xff0c;并且解释…

数据库高级 II

数据库高级 II 如何保证二叉排序树中的元素是可比较大小的 让元素所属的类实现接口Comparable 比较器: Comparable: 内比较器,类实现该接口后,需要重写其中的抽象方法,在类的内部定义比较规则.观察String对象之间的比较练习:创建Student类型,其中的属性有:id 学号,name 姓名…

【深度学习】实验4布置:脑部 MRI 图像分割

DL_class 学堂在线《深度学习》实验课代码报告&#xff08;其中实验1和实验6有配套PPT&#xff09;&#xff0c;授课老师为胡晓林老师。课程链接&#xff1a;https://www.xuetangx.com/training/DP080910033751/619488?channeli.area.manual_search。 持续更新中。 所有代码…

【Linux】基础IO —— 缓冲区深度剖析

&#x1f308;欢迎来到Linux专栏~~基础IO (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&#xff01;送给自己的一句鸡汤&a…