這是對一篇文章的翻譯,原文連接在這裏:flux下action的標準命名規範
鑑於redux是在flux的基礎上的一個昇華,不少本質的內容是類似的。所以Redux的action命名規範是能夠參考flux的命名規範的。特此翻譯一下。文筆拙劣,多多體諒。javascript
若是咱們在對Flux的actions的格式上有必定的規範的話,對於action的操做將會簡單不少。例如,全部的flux actions都有一個標識域(identifier field),好比type
,actionType
,actionId
。不少Flux的實現還指明瞭一個方式來講明操做成功仍是失敗,這種方式在獲取數據操做中尤其重要。爲這些模式定義一個通常標準有助於咱們開發更有用的工具以及抽象。java
能夠將Flux的actions看作一系列異步的值。對於它們而言如何進行錯誤處理是至關重要的。現現在,不少Flux的實現都沒有進行錯誤處理,取而代之的是定義了相似於LOAD_SUCCESS
和LOAD_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 }
一個action應當
1.是一個普通的javascript對象
2.有一個type
屬性npm
一個action能夠
1.包含一個error
屬性
2.包含一個payload
屬性
3.包含一個meta
屬性redux
一個action不能夠包含這四個屬性之外的其餘屬性promise
action中的type標識一般是向消費者說明action的屬性。一般狀況下,type是一個字符串常量或者是一個符號標記。若是兩個type相同,那麼他們必須全等(===)。這裏的意思是,type具備惟一性和標誌性,用來標記action。微信
payload標識是可選的,並且能夠是任何類型的數據。它表示這個action攜帶的內容。任何一個不屬於type和action狀態的值都應該屬於payload域。
一般狀況下,若是error是true,那麼payload應該是一個error對象。
error標識是可選的,並且當該action表示一個報錯時,其值能夠是true。當一個action的error域值爲true時,它等價於一個被拒絕的promise。一般狀況下,這是的payload值是一個error對象。
若是一個error有其它的非true的值,包括undefined和null,那麼這個action就不該當被解讀爲是一個error。
meta標識是可選的,並且能夠是任何類型的數據。它旨在保存一切不屬於payload的額外信息。
flux-standard-action
模塊能夠經過npm安裝,它提供了一些工具。import {isFSA} from 'flux-standard-action
isFSA(action) 若是action符合FSA標準,那麼返回true
想要了解更多開發技術,面試教程以及互聯網公司內推,歡迎關注個人微信公衆號!將會不按期的發放福利哦~