[解決済み] redux、react-redux、redux-thunkの違いは何ですか?
質問
React + Fluxを使用しています。私たちのチームは、fluxからreduxに移行することを計画しています。Reduxは、fluxの世界から来た私にとって、非常に分かりにくいです。で fluxの制御フローは から単純に コンポーネント -> アクション -> ストアとストア更新のバックコンポーネント . シンプルでとても分かりやすいですね。
しかし、reduxでは混乱します。ここではストアは存在しませんが、ストアを使わない例もあります。いくつかのチュートリアルを見てみましたが、実装のスタイルは人それぞれです。コンテナを使っているものもあれば、そうでないものもあります。(私はこのContainersの概念を知らないし、mapStateToPropsやmapDispatchToPropsが何をするのか理解できない)。
- reduxで制御フローがどのように行われるか、誰か明確に説明してください。
- reduxのコンポーネント、コンテナ、アクション、アクションクリエーター、ストアの役割は何ですか?
- redux/react-redux/redux-thunk/その他の違いについて教えてください。
- 他の言語へのリンクを貼っていただけると助かります。 シンプルで正確な redux チュートリアルのリンクを貼っていただけると助かります。
どのように解決するのですか?
<ブロッククオート- reduxでどのように制御フローが行われるのか、誰か明確に説明してください。
Reduxは(常に)単一のストアを持ちます。
-
ストアの状態を入れ替えたいときは、必ずアクションをディスパッチします。
-
アクションは1つ以上のリデューサーによってキャッチされます。
-
リデューサは、古い状態とディスパッチされたアクションを組み合わせた新しい状態を作成します。
-
ストアサブスクライバーは新しいステートがあることを通知されます。
- reduxにおけるコンポーネント/コンテナ/アクション/アクションクリエーター/ストアの役割は何ですか?
-
ストア - 状態を保持し、新しいアクションが到着すると、ディスパッチ -> ミドルウェア -> リデューサーのパイプラインを実行し、状態が新しいものに置き換わったときにサブスクライバーに通知します。
-
コンポーネント - 状態を直接意識しない、間抜けなビューパーツ。プレゼンテーショナル・コンポーネントとも呼ばれます。
-
コンテナ - react-reduxを使用して状態を認識するビューの部分です。スマートコンポーネント、高次コンポーネントとも呼ばれる。
コンテナ/スマートコンポーネント対ダムコンポーネントは、アプリを構造化するための良い方法に過ぎないことに注意してください。
-
アクション - フラックスと同じ - タイプとペイロードを持つコマンドパターン。
-
アクションクリエイター - DRYな方法でアクションを作成します(厳密には必要ありません)。
- redux/react-redux/redux-thunk/その他 の違いについて教えてください。
-
リデュース - fluxはflowのように1つのストアで、vanilla js, react, angular 1/2など好きな環境で使用できます。
-
react-redux - reduxとreactのバインディングです。このライブラリは react フック -
useSelector()
とuseStore()
でストアからデータを取得しuseDispatch()
でアクションをディスパッチします。またconnect()
関数を使用して HoC (高次コンポーネント) を作成し、ストアの状態の変化を聞き、ラップされたコンポーネントのプロップを準備し、状態が変更されたときにラップされたコンポーネントを再レンダリングすることができます。 -
redux-thunk - は、アクションの代わりに関数を返すアクションクリエイターを書くことができるミドルウェアです。サンクは、アクションのディスパッチを遅らせたり、特定の条件が満たされたときだけディスパッチするために使用することができます。主に、成功/失敗時に別のアクションをディスパッチするような、APIへの非同期呼び出しに使用されます。
- 簡単で正確なreduxのチュートリアルのリンクを貼っていただけると助かります。 チュートリアルのリンクを貼っていただけると助かります。
関連
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] Reactのこの3つの点は何をするところなのでしょうか?
-
[解決済み] React NativeとReactの違いは何ですか?
-
[解決済み] Reduxの非同期フローになぜミドルウェアが必要なのか?
-
[解決済み] ES6 ジェネレータで redux-saga を使用する利点/欠点と ES2017 async/await で redux-thunk を使用する利点/欠点
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] 変異を伴わないオブジェクトからの値の削除
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法