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の一部ではないあらゆる種類の追加情報を意図している。