2016-08-17 36 views
3

私はしばらくの間、バニラ・リアクトを使用していましたが、現在私がやっている新しいプロジェクトのためにReduxを詳しく見ることに決めました。reduxでコンポーネント状態を処理するにはどうすればよいですか?

は、最初に私は、すべてのユーザーのアクティビティがあなただけの適切なアクションを再生することにより、任意のアプリケーションの状態を再構築することができるだろうということで主な理由の一つで、アクションにつながるはずですという印象を受けました。

しかし、この問題は、実際にはアプリケーション状態のように感じられない多くのものを店舗に入れてしまうことです。 "この入力に注目すると、ラベルは緑色に変わります"というようなものは、数百のコンポーネントで構成されている可能性のあるアプリケーションのアプリケーション状態で表現されているようには見えません。これらのことは、典型的なtodoチュートリアルでは完全に理解しますが、より複雑なシナリオでどのようになるかを理解することは難しいでしょう。

次に、もう少し読んだところ、作成者のDan Abramovが後援している一般的な意見では、通常、ローカルコンポーネントの状態とアプリケーションの状態(ストア)を結合する必要があることがわかりました。 「最も厄介なものは何であれ」は、国家をどこに保管するかの大まかなルールと思われた。

実際にアプリケーション状態であり、複数のコンポーネントに関連するものはストア内に存在する必要がありますが、1つのコンポーネントに関係する厳密に表示される詳細は通常の反応状態を使用して処理する必要があります。一方、このアプローチは私が最初に書いたことのために私を少し混乱させます。あなたがコンポーネントの中に状態を分散させるのを避けること、そして状態を再現できることアクションを保存するだけで?

私は気になっていたので、誰かがこの懸念を払拭してくれることを願っています。

答えて

3

あなたは完全にあなたの居場所を決めます。時々、すべてをReduxに入れることが理にかなっていることがあります。時には、コンポーネントをコンポーネントに保持することが理にかなっていることがあります。私は最近、いくつかの良いルールを見ました:

  • アプリケーションの他の部分はそのデータについて気にしていますか?
  • そのデータからさらにデータを引き出すことができる必要がありますか?
  • 複数のコンポーネント/機能を駆動するために同じデータが使用されていますか?
  • 状態を特定の時点(つまり、旅行/デバッグ)に戻すことができるという価値はありますか?
  • データをキャッシュしますか?つまり、データを再度要求するのではなく、すでに存在する場合は、状態からリロードしますか?

(。そのリストのhttps://www.reddit.com/r/reactjs/comments/4w04to/when_using_redux_should_all_asynchronous_actions/d63u4o8にクレジット)

また、このトピックにReduxのFAQを参照してください:http://redux.js.org/docs/FAQ.html#organizing-state-only-redux-state

関連する問題