私はシンプルな(またはより高度な)レデューサーを提供するいくつかのファクトリー関数を作成しました。私はカジュアルなアクションのほとんどを処理し、完全に機能する減速機にそれらを構成することができ、これらのファクトリ関数とredux
からcombineReducers
を使用してReduxの上位レデューサーの作成
export const reduceRequestState = (requestTypes: RequestActionTypes) =>
(state: RequestState = RequestState.None, action: Action): RequestState => {
switch (action.type) {
case requestTypes.start:
return RequestState.Waiting;
case requestTypes.success:
return RequestState.Success;
case requestTypes.error:
return RequestState.Error;
case requestTypes.reset:
return RequestState.None;
default:
return state;
}
};
: - たとえば(単純なアクションタイプのベースは、値としてRequestState
定数を設定します)。それは私に読めるコードを与え、私がばかげた間違いをするのを防ぎます。
ファクトリは一般的なアクションには適していますが、ストアの一部を変更するカスタム動作(アクションタイプ用)を追加する必要があるときは、そのアクションを処理するリデューサのカスタム部分を書きたいと思います私。 考え方は、反復子を反復的に構成することです。したがって、配列の場合はcombineReducers
です。このようにして、私の工場で減速機を作ってから、それを私のカスタム減速機と組み合わせて、いくつかの特定の動作を処理することができます。配列のcombineReducers
は、最初の配列を呼び出し、何も変更されていないことを認識し、2番目の(カスタム)配列を呼び出してアクションを処理します。
私はいくつかの解決策を探していて、redux-actions
を見つけましたが、セマンティクスを私が慣れ親しんだものと少し違うようにアクションとレデューサーをリンクする方法はあまり好きではありません。たぶん私はそれを得ることはできませんが、最終的に私のレデューサーは純粋な機能として書かれているのが好きです。
私は方法を示すいくつかのヒントを探しています。 任意の種類の高次減速機を使用し、何らかの方法でそれらを組み合わせたライブラリまたはプロジェクトはありますか? 上記のようなレデューサーの作成に関する欠点はありますか?