私はcombineReducersを使用してすべてのレデューサーを組み合わせてストアを作成していますが、どのビューからディスパッチされたアクションでも、すべてのレデューサーが呼び出されてアクションタイプを確認できますか?アクションがディスパッチされると、すべてのレデューサーが呼び出されますか?
または私は完全にReduxの設計原理を理解していない?
私はcombineReducersを使用してすべてのレデューサーを組み合わせてストアを作成していますが、どのビューからディスパッチされたアクションでも、すべてのレデューサーが呼び出されてアクションタイプを確認できますか?アクションがディスパッチされると、すべてのレデューサーが呼び出されますか?
または私は完全にReduxの設計原理を理解していない?
はい、それは正しいです。
あなたは小道具Aは、状態に依存していると言うことができるただし、この動作を最適化する必要が一つの選択肢(Reduxのドキュメントから提案)「再選択」を使用することですhttps://github.com/rackt/reselect
が再選択は基本的に、メモ化セレクタを作成することができます状態Bまたは状態Cが変化した場合にのみ、小道具Aを再計算する。
これは引き続きすべてのレデューサーが実行されることに注意してください(また、switchステートメントを実行してアクションが適用されるかどうかを確認してください)。しかし、再選択を使用すると、毎回変更をトリガーするのではなく、変更が効果がなかった場合でもReactがすべてを再レンダリングするのではなく、その状態に影響する実際の変更があった場合にのみ、それはどこか無関係だったからです。
はい - アクションをディスパッチするとすべてのレデューサーが呼び出されます。それに素晴らしい副作用が1つあります。アクションが見つからない場合、すべてのレデューサーがデフォルトの状態を返すので、単一のアクションで初期状態が設定されます。
私はまだ試していませんが、複数のレデューサーに影響を及ぼす単発的な作用をストアの2つの異なる部分で状態を変えることが有益なことがあります。
@luanpedとして再選択を追加すると、多くの病気の結果が出る可能性があります。
私の現在のスタックである:
反応再選択データ変換層用
実際に私はreduxでvue.jsを使用しています。皆さんの提案に感謝します。 – elaijuh
あなたは歓迎です:)しかし、すべてのレデューサーが呼び出されていますが、実際にはスイッチのステートメントがチェックされ、そのアクションを処理するレデューサーのみが何らかの作業を行い、他のすべては何もしないので、パフォーマンスの問題ではありません。現代のJSは大きなスイッチ文をO(1)アクセス時間を持つジャンプテーブルに最適化するので、多くの回のアクションがマッチしなくても、リデューサーの大きなswitch文の評価について心配する必要はありません任意の条件。 – luanped
レデューサー内のアクションオブザーバーパターンはスイッチではなく、オブザーバーパターンの完全な例です –