redux下action的命名规范--翻译文

标题

这是对一篇文章的翻译,原文连接在这里:flux下action的标准命名规范
鉴于redux是在flux的基础上的一个升华,不少本质的内容是类似的。所以Redux的action命名规范是能够参考flux的命名规范的。特此翻译一下。文笔拙劣,多多体谅。javascript

动机

若是咱们在对Flux的actions的格式上有必定的规范的话,对于action的操做将会简单不少。例如,全部的flux actions都有一个标识域(identifier field),好比type,actionType,actionId 。不少Flux的实现还指明了一个方式来讲明操做成功仍是失败,这种方式在获取数据操做中尤其重要。为这些模式定义一个通常标准有助于咱们开发更有用的工具以及抽象。java

将Error做为一个

能够将Flux的actions看作一系列异步的值。对于它们而言如何进行错误处理是至关重要的。现现在,不少Flux的实现都没有进行错误处理,取而代之的是定义了相似于LOAD_SUCCESSLOAD_FAILURE的action类型。这样的实现方式并不理想,由于它存在两个问题:将某一种特定的action类型与一个全局的action类型混淆,并且它指示当前action是否表明了一个error。git

设计目标

1.人性化。FSA action应当能够被程序员轻松的读和写
2.可用性。FSA actions应当可以支持创造工具和抽象
3.简洁。 FSA应当简洁直观并且具备灵活性。程序员

例子

一个基本的Flux标准actiongithub

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

描述一个error,相似于一个被拒绝的promise的返回值面试

{
      type: 'ADD_TODO',
      payload: new Error(),
      error: true
    }

Actions

一个action应当
1.是一个普通的javascript对象
2.有一个type属性npm

一个action能够
1.包含一个error属性
2.包含一个payload属性
3.包含一个meta属性redux

一个action不能够包含这四个属性之外的其余属性promise

type

action中的type标识一般是向消费者说明action的属性。一般状况下,type是一个字符串常量或者是一个符号标记。若是两个type相同,那么他们必须全等(===)。这里的意思是,type具备惟一性和标志性,用来标记action。微信

payload

payload标识是可选的,并且能够是任何类型的数据。它表示这个action携带的内容。任何一个不属于type和action状态的值都应该属于payload域。
一般状况下,若是error是true,那么payload应该是一个error对象。

error

error标识是可选的,并且当该action表示一个报错时,其值能够是true。当一个action的error域值为true时,它等价于一个被拒绝的promise。一般状况下,这是的payload值是一个error对象。
若是一个error有其它的非true的值,包括undefined和null,那么这个action就不该当被解读为是一个error。

meta

meta标识是可选的,并且能够是任何类型的数据。它旨在保存一切不属于payload的额外信息。

工具

flux-standard-action模块能够经过npm安装,它提供了一些工具。
import {isFSA} from 'flux-standard-action
isFSA(action) 若是action符合FSA标准,那么返回true

clipboard.png
想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注个人微信公众号!将会不按期的发放福利哦~

相关文章
相关标签/搜索