この質問は、あなたのレデューサーのアーキテクチャを言及していないという意味では、あなたが提供している現在の範囲を超えて、いずれにせよ、の部分で手放す:
はOPENとADD_TO_CART万一これらのアクションクリエイターの一部であるか この機能はボードのアクションクリエイターに属していますか?
私は完全にあなたがboard's
アクションの作成者によって何を意味するか理解していないが、私は、ex、それらは、単一のクリエイターに連結されている場合、それは行動を推論するためにはるかに簡単であると信じて:
function addToCart(item) {
return dispatch => dispatch({type: ADD_TO_CART, item})
}
異なるクリエイターが同じアクションを送信するよりも、どのクリエイターがどのアクションをディスパッチしたかが完全にはわからない可能性があるため、コードをデバッグするのが難しくなりますので、私の提案は1クリエーター→1アクションです。
また、アクションクリエーターをコンポーネントに接続するときは、実際に何が起こっているかを実行時にコードをデバッグする必要がないように、可能な限り明確にアクションを実行してください。
if(this.props.isItem) {
this.props.addToCart(this.props.item);
} else {
this.props.open(this.props.category);
}
コードはわかりやすく、実行時に奇妙な動作を防止します。
これらの処理をどの減速器で処理する必要がありますか?
これは私があなたの減速の現在の構造を知っているが、一般的に右のアーキテクチャを選択することは常に困難であるが、一般的なガイドラインとして、私は言うだろうしていないではないという理由だけで、非常に厳しい質問です:
Always split your reducers to sub-domains of your problem
OPEN
というアクションがあります。これは実際には縮小モデルをビューモデルとして使用していると思うようになりますが、実装の詳細にも依存します。
ビューモデルレデューサーは私の意見では非常に便利ですが、あなたがアクションOPEN
を持っている場合は、項目情報だけでなく、このレデューサーのアプリケーションビューの状態も私はITEM_OPEN
に名前を変更します。OPEN
アクションを作成する場合は、open
のアイテムを保存して、減速機が実際にアプリケーションで新しい状態を生成するように、別のサブドメインのアクションをOPEN
にすることもできます。
私はOPEN
アクションを削除するには、反応ルータや同様のアクションを介して単純に処理する必要があります。
あなたの制限された情報で判断すると、2つの減速機、1つはカート用、もう1つは減速機でなければなりません。ADD_TO_CART
アクションは明らかにカートレデューサーによって処理され、OPEN
を処理する必要がありますアイテム減速機によって。