taiki-t's diary

きぎょうにっき, React Native, Rails そして雑多な記録: The world is waiting for you to give it the meaning.

試訳: combineReducers

Redux documentsの「Using combineReducers」の最初だけざっと試訳してみた。推敲してないので間違ってたら申し訳ない。とはいえ割と合ってると思う。まあやってみたのを手元に置いておくだけなのも勿体無いので置いておく感じ。改善は自由に。



Reduxアプリケーションにおける最も一般的なstateの形式は、素朴なJavaScriptオブジェクト(plain JavaScript object)がトップレベルキーのそれぞれにドメイン固有データの「一部分」を保持する形式です。 同じように、この形式のstateに対するreducerのロジックを書くアプローチとして最も一般的なのは、それに対する「部分reducer」関数を書く方法です。具体的には、reducerそれぞれが同じ(state, action)シグネチャを持ち、それぞれがそのreducerに固有のstateの部分に対するすべての更新を管理する責任を負うように書きます。複数の部分reducerが同じアクションに応答することもありえます。その場合それぞれが独立に、必要に応じて自身の担当するstateの部分を更新し、そして更新された部分は新しいstateオブジェクトに合体(combine)されます。

このパターンはとても一般的なので、この振る舞い実装するためにReduxはcombineReducerユーティリティを用意しています。これはhigher-order reducerの一例です。これは、部分reducer関数が詰められたオブジェクトをとり、新たなreducer関数を返すものです。


Using combineReducers

Core Concepts

The most common state shape for a Redux app is a plain Javascript object containing “slices” of domain-specific data at each top-level key. Similarly, the most common approach to writing reducer logic for that state shape is to have “slice reducer” functions, each with the same (state, action) signature, and each responsible for managing all updates to that specific slice of state. Multiple slice reducers can respond to the same action, independently update their own slice as needed, and the updated slices are combined into the new state object.

Because this pattern is so common, Redux provides the combineReducers utility to implement that behavior. It is an example of a higher-order reducer, which takes an object full of slice reducer functions, and returns a new reducer function.


Using combineReducers · Redux