Other than type, the structure of an action object is really up to you. If you're interested, check out Flux Standard Action for recommendations on how actions could be constructed.
(訳)Typeを除き、Actionオブジェクトの構造はあなた次第です。もし興味があれば、Actionをどのように構築したらいいかの推奨事項についてFlux Standard Actionを調べてください。
とあります。このFlux Standard Action(FSA)について説明します。
目次
- なぜFSAが必要なのか
- FSAの内容
なぜFSAが必要なのか
前述の通り、Flux/ReduxのActionには、オブジェクトであれば何でも指定できます。
しかし、例えばアプリごとにデータをpayloadフィールドに入れたりdataフィールドに入れたりと実装がばらついた場合、コードを再利用することが難しくなります。
このような問題を回避するため、Actionの書き方に規約を持たせようというのがFSAが必要な理由です。
FSAの内容
Actionの条件
- 必須条件
- プレーンなJavaScriptオブジェクトであること。
-
type
プロパティを持つこと。 - 「
type
,error
,payload
,meta
」以外を含まないこと。
- オプション条件
-
error
プロパティを持つこと。 -
payload
プロパティを持つこと。 -
meta
プロパティを持つこと。
-
type
の条件
type
はActionの性質を特定するための識別子である。
type
は文字列定数であること。あるtype
どうしが等価であるならば、それらは厳密等価演算子(===
)で比較して等価であること。
payload
の条件
payload
はどんな値でもよい。ActionのTypeについてではない情報や、Actionのステータスではない情報は、すべてpayload
に含まれるべきである。
error
がtrue
であるときは、payload
はerrorオブジェクトであるべきである。
error
の条件
Actionがエラーを表す場合、オプションのerror
プロパティをtrue
に設定してもよい。このとき、payload
はエラーオブジェクトであるべきである。
error
がundefined
かnull
など、true
以外の値である場合、エラーと解釈してはいけない。
meta
の条件
meta
は、どんな値であってもよい。meta
は、payload
の一部ではないあらゆる種類の追加情報を意図している。