Redux.combineReducers についてのメモ
コンポーネント毎に機能を分割する上で、 combineReducers はとても役に立った。
しかしながらこれが持つ微妙な癖に少し戸惑ったのでメモを残しておきたい。
※ここにあるのは経験則です。ドキュメント読めばもっとスマートなやり方があるかもしれません。
グローバルステート
どのコンポーネントからも参照できるプロジェクト全体のステート。
combineReducers が次のように設定されているとき、
export default combineReducers({ "reducerA": componentReducerA, "reducerB": componentReducerB });
グローバルステートは次のような形になる。
{ "reducerA": { ... }, "reducerB": { ... } }
各 Reducer のスコープ
combineReducers によって結合される各 Reducer は、グローバルステート内に割り当てられたそれぞれのネームスペースのみ操作できる。
上記の例で言えば、 componentReducerA は state.reducerA の内部しか操作することはできない。
言い換えると、 componentReducerA は state.reducerB を操作することができない。
別コンポーネントのステートを更新するには
ActionCreator によって作成された Action は、 combineReducers によって結合されたすべての Reducer に通知されるため、これを利用する。

最後に
子コンポーネントは Action だけ飛ばしてルートコンポーネントの Reducer でステート管理すればいいのでは、と思い始めている。