博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redux概念之三: Action(动作)与Action Creator(动作创建器)
阅读量:6943 次
发布时间:2019-06-27

本文共 1563 字,大约阅读时间需要 5 分钟。

这两个是Flux架构中的参与成员,Redux中有说明Action的定义:

Actions(动作)是从你的应用送往store(存储)的信息负载

你可能会一直在Action(动作)这里看到payload这个字词,它是负载有效数据的意思,这个字词的意思解说你可以看一下,不难理解:

Payload用在计算机科学的意思,是指在数据传输时的"有效数据"部份,也就是不包含传输时的头部信息或metadata等等用于传输其他数据。它的英文原本是指是飞弹或火箭的搭载的真正有效的负载部份,例如炸药或核子弹头,另外的不属于payload的部份当然就是火箭传送时用的燃料或控制零件。

这个Action是有一个固定格式的,叫作,格式会像下面这样,是个JavaScript的对象字面定义:

{  type: 'ADD_TODO',  payload: {    text: 'Do something.'  }}

这样一个用于描述动作的单纯对象字面定义,就称为Action(动作)。

为什么要先写出明确的Actions(动作),也就是把所有的组件会用到的Actions(动作),全部集中写到一个档案中?这也是个硬规则,就像你如果参加奥运的体操比赛,每种项目都有规定的动作,在一定的时间内只能作这些动作,按照表定运行。主要还是因为Redux并不知道你的应用程序里会作什么动作,需要有一个明确说明有哪些动作的地方,在运作时以这个对照表为基准。

当然,Actions(动作)必需要有type(类型),而且在同一个应用中的type(类型)名称是不能重覆的,它的概念有点类似于数据表中的主键属性。

那么Action Creator(动作生成器)又是什么?

在程序语言的函数库中,如果是个英文的名词,通常都是代表某种对象或数据格式,例如Action(动作)就是个单纯的对象。如果叫什么xxxxter或xxxxtor的,中文翻译是"器"、"者",通常就是个函数或方法,像上面的reducer和这里的Action Creator,都是一种函数。

Action creator的设计也是由Flux架构来的产物,它是一种辅助用的函数,用来创建Action的。但因为设计的不同,在Redux中的Action creator比在Flux更简单,它通常只用来返回Action对象而已,当然它本身是个函数,在返回前是可以再针对返回的动作数据先进行运算或整理的,例如像下面这样的函数:

export function addTodo(text) {  return { type: ADD_TODO, text }}

这个addTodo函数,有一个传参,这个传参就会用于组成Action对象中的payload(有效数据)。

如果一个Action对象简单到连payload(有效数据)都没有,通常会是个固定payload(有效数据)的动作,例如每动作一次+1或-1,或是每动作一次在true或false值切换,那么在Redux中允许连Action或Action Creator都可以不用写了。但是这种情况大概只有在很小的应用,或是学习阶段的例子才会这样,如果应用还是有一定程度的复杂度,一定都是要写出来的。

当然,Action Creator自然有它很重要的作用,其中之一就是处理有副作用的运行,例如计时器、Fetch/Ajax等等,因为reducer是一个强制无法有副作用的纯函数,所以Redux中的副作用会写在在Action Creator里,不过这需要再配合中介软件(middleware)来运行,之后的章节会再说明。

注: Action Creator在Redux中并没有一定要是个纯函数,只是不建议在里面直接运行有副作用的函数。请参考这篇在stackoverflow的。

转载地址:http://hranl.baihongyu.com/

你可能感兴趣的文章
计算机之计算的实现
查看>>
2.16 umask
查看>>
Java之品优购课程讲义_day12(3)
查看>>
pyhanlp 停用词与用户自定义词典功能详解
查看>>
深度解析Tengine的调试与资源监控方法论
查看>>
常见天气api
查看>>
linux实战---基于KVM虚拟化搭建LAMP
查看>>
创建一个jdbc连接
查看>>
HBase原理——要弄懂的sequenceId
查看>>
CentOS中部署Docker并配置Nginx
查看>>
学习云计算哪里好?云计算新的前景出路
查看>>
解决已经装了telnet还是无法使用的问题
查看>>
最新变体后缀YOUR_LAST_CHANCE勒索病毒分析处理数据恢复,扩展名firex3m系列
查看>>
欧盟公布人工智能道德准则 列出可信赖AI关键条件
查看>>
VS2019生成的DeBug版程序寻找main函数
查看>>
如何实现分享网站文章到微信朋友圈时显示指定缩略图或LOGO
查看>>
oracle技术之利用STANDBY将单实例数据库升级为RAC环境(三)
查看>>
浅谈如何管理Oracle PGA
查看>>
设置grep高亮显示匹配项
查看>>
简单分析阿里云生态环境
查看>>