2017-08-03 8 views
0

私はレデューサーについていくつかのビデオを見てきました。彼らはすべて私のプロジェクト全体に1つのレデューサーと状態を使用し、すべてのレデューサーを1つの大きなレデューサーに結合する必要があると主張しました。Reduced in Reduxをいつ、なぜ組み合わせるべきですか?

私の質問は、なぜ私はこれを行うのですか?私が大きなアプリケーションを持っていると想像して、私はすべてのレデューサーを組み合わせます。私の結合された減速機は巨大で、すべての単一の減速機のスライスをチェックする必要があるので、単一の状態の変更にはかなり時間がかかります。

もっと大きなプロジェクトには1台の減速機を使ってください。なぜ複数の店舗を作るのではなく、それらを組み合わせるべきか、そのパフォーマンスはどうですか?

アプリケーションがより複雑に成長するにつれ、あなたは、別々の機能に 機能を削減 状態のそれぞれ管理する独立した部分に分割することをお勧めします。

.combineReducers(...) 

どうもありがとうございました。 Redux FAQ entry on the performance of "calling all reducers"パー

+1

複数の店舗はありますか? Reduxの全目標は、単一のグローバルな状態、単一の真実の起源を持つことです。レデューサーを組み合わせることで、Reduxは状態を構築できます。 – Li357

+0

ああ、ありがとう、Andrew !. - 私たちはパフォーマンスの問題を起こさないでしょうか?多くのレデューサーを1つのルートレデューサーに組み合わせたら?ある特定の減速機で処理する必要があるアクションがあるとしたら、ターゲット減速機のためだけにバンドル全体を反復処理する必要があるとします。 – JohannaNoobie

+1

すべてのレデューサーを組み合わせると、それらはすべて結合して、すべてのタイプのアクションをチェックする1つの特異関数になります。最悪の場合、適切なアクションを見つける前にすべてのアクションをチェックする必要があります。実質的に言えばパフォーマンスヒットはあまりありません。パフォーマンスについてはまったく心配するべきではありません。 – Li357

答えて

2

それは、Reduxの店は本当に唯一の単一減速機能を持っていることに注意することが重要です。店舗は現在の状態とディスパッチされたアクションをその1つのリデューサ関数に渡し、リデューサが適切に処理するようにします。

単一の関数で可能なすべてのアクションを処理しようとすると、関数のサイズと読みやすさという点ではうまくスケールされません。そのため、実際の作業をトップレベルのレデューサーによって呼び出すことができる別々の関数。

しかし、多くの異なるリデューサ関数が一緒に構成されていても、深くネストされた状態であっても、減速器の速度は問題になることはほとんどありません。 JavaScriptエンジンは、毎秒非常に多くの関数呼び出しを実行することができます。ほとんどのリデューサーは、たぶんswitch文を使用して、ほとんどのアクションに対応してデフォルトで既存の状態を返すでしょう。 the FAQ entry on whether you should create multiple storesからも

、:

これは、ページ内に複数の異なるReduxの店舗を作成する可能ですが、意図したパターンは、単一の店を持つことです。単一のストアを持つことにより、Redux DevToolsの使用が可能になり、データの永続化と再水和がより簡単になり、サブスクリプションロジックが簡素化されます。

ただし、新しい店舗を作成することは、特にFluxのバックグラウンドから来た場合は、最初の本能ではありません。レジューサー組成物を最初に試し、問題が解決しない場合は複数の店舗を使用してください。

+0

あなたを愛して! – JohannaNoobie

関連する問題