Normalizr, Immutable, Reselect によるRedux storeの正規化 - mtnori/tips GitHub Wiki

Normalizr, Immutable, Reselect によるRedux storeの正規化

  1. APIクライアントで取得したJSONデータをNormalizrで正規化する。

  2. 正規化したデータをRedux storeへ格納する。 Result reducer と Entity Reducer へ分離する。

  3. React側でこのデータを利用するときは、react-reduxのmapStateToProps内で
    Reselectを利用し、Result を基準に Entity を合成する。
    この時、ImmutableのRecord側にすると良い。

  4. Recordをextendsすることで、ロジックを持ったドメインエンティティのようなことができるが、
    FlowTypeを使用している場合、上手くいかない。
    割り切って、エンティティを引数とした関数を同ファイル内に定義するのが無難。

  5. Reselectは引数をいくつでも持てるはずだが、FlowTypeの定義は17つぐらいまでなので、
    これを超えると警告がでる。出したくなければ、チェックをOFFにするか、 セレクタを分けること。