2017-01-11 5 views
15

私はReduxを学びましたが、私が不明な部分は、どのように反応状態と還元型ストアを使用してからアクションをディスパッチするかを決めることです。これまでの私の読書からは、Reduxストアの代わりにReactステートを使用しても、やっているように見えます。私は、Reduxストアを使用することによる懸念の分離を理解し、1つのコンテナコンポーネントとそれ以外のものをステートレスコンポーネントとして持つことを理解していますが、どのようにReact state Vs reduxストアを使用するのかを決めるには、誰かが助けてくれますか?React state Vs Redux Storeをいつ選択するのですか

ありがとうございます!

+1

これは、React Reduxに入る人が直面する共通のジレンマです。しかし、アプリケーション状態とコンポーネント状態の違いを理解することをお勧めします。 – semuzaboi

+0

Dan Abramov(Reduxの作成者)[既にこれに回答しました](https://github.com/reactjs/redux/issues/1287) – totymedli

答えて

20

場合:

は実際にあなたがダン・アブラモフ監督、あなたは私よりも、より良い答えを与える可能性が再来の作成者Reduxの必要はないかもしれませんと呼ばれる興味深い記事があります他のコンポーネント、またはコンポーネントがアンマウントされているときに状態を保持する必要がない場合は、コンポーネントの状態に入れるだけです。

Reduxストアはフロントエンドのデータベースだと考えることができます。APIから商品データを取得した場合、Reduxストアが適切な場所にあります。 isOpenの小道具を持っているドロップダウンコンポーネントがある場合、そのドロップダウンの親はdropdownIsOpenをコンポーネントの状態としてそのまま保つことができます。また、あなたは、これは間違ってい

のみ1つのコンテナコンポーネントとそれの残りの部分として、ステートレスなコンポーネント

を言っhttps://github.com/reactjs/redux/issues/1287

:詳細については

は、ここにダンからの回答です。いくつかのコンテナコンポーネントを持つことができます。コンテナコンポーネントは、別のコンテナコンポーネントを含むこともできます。本から

+0

Reduxのよくある質問(http://redux.js.org/docs/faq/OrganizingState.html#organizing-state-only-redux-state、http://redux.js.org/docs/faq)からの回答もご覧ください。 /ReactRedux.html#react-multiple-components – markerikson

0

:すべての

まず、私たちは常に必要なデータのみ最小限 量は状態に置かれるべきであることを心に留めておく必要があります。たとえば、 ボタンをクリックしたときにラベルを変更する必要がある場合は、ラベルのテキストを に保存しないでください。 ボタンがクリックされたかどうかを示すブールフラグを保存するだけです。第2に、 イベントを が発生したときに更新したい値だけを状態に追加し、そのためにコンポーネントを再レンダリングする必要があります。 状態が ストア情報の正しい場所であるかどうかを判断するもう1つの方法は、コンポーネント自体の外側またはその子の外側に永続化しているデータが必要かどうかを確認することです。複数の コンポーネントで同じ情報を追跡する必要がある場合は、 はアプリケーションレベルでReduxのような状態マネージャを使用することを検討する必要があります。

関連する問題