reduxを使用するときにthis.setState()を使用する必要がありますか?


111

this.setState()reduxを使用するときに使用する必要がありますか?それとも、あなたは常に行動を派遣し、小道具に依存している必要がありますか?


1
状態を持ついくつかのコンポーネントを持つことは何の問題もありません。
zerkms 2016年

3
それは、状態が使用されている場所に完全に依存します。reduxストアはグローバルであると考えてください。グローバルである必要がないものは、コンポーネントとその子に対してプライベートのままにすることができます。
azium 2016年

回答:


139

の明確な使用法は、setStateローカルの表示状態を持つUIコンポーネントですが、グローバルアプリケーションには関係ありません。たとえば、特定のドロップダウンメニューがアクティブに表示されるかどうかを表すブール値はグローバル状態である必要はないので、メニューコンポーネントの状態によってより便利に制御されます。

その他の例には、階層のアコーディオン表示での行の折りたたみ/展開状態が含まれる場合があります。または、タブナビゲーションで現在選択されているタブ。ただし、どちらの例でも、UI状態をグローバルに処理することを選択する場合があります。たとえば、ブラウザのストレージで展開/折りたたみ状態を永続化して、ページの更新によって保持されるようにする場合、これが必要になります。

実際には、通常、そのようなUI要素をローカル状態で実装し、必要に応じてそれらをグローバル状態にリファクタリングするのが最も簡単です。


23
これをフォローアップするために、関連するReduxのFAQエントリは、ことを強調の使用はsetState完全に罰金ですredux.js.org/docs/faq/...
markerikson

2
ハンドオフする場合やサーバー側のレンダリングを使用する場合は、常にReduxを使用する必要があると思います
neaumusic

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.