[解決済み] ReduxでReact?コンテキスト」問題はどうなる?
質問
私は通常Stackにコード関連のものを投稿しますが、これはむしろコミュニティの一般的な考えがどのようなものであるのかについての質問です。
データ/状態を管理するためにReactでReduxを使用することを提唱する人がたくさんいるようですが、両方を読んで学習している間に、私はかなり正しく見えないものに遭遇しています。
Redux
このページの下の方にある http://redux.js.org/docs/basics/UsageWithReact.html (ストアの受け渡し)では、Reactの「Context」の"Magic"を使うことが推奨されているそうです。
1つのオプションは、すべてのコンテナコンポーネントにpropとしてそれを渡すことです。しかし、コンポーネント ツリーの奥深くにあるコンテナをレンダリングするという理由だけで、プレゼンテーショナル コンポーネントを通してでもストアを配線しなければならないため、面倒になります。
私たちが推奨するオプションは、魔法のようにすべてのコンテナコンポーネントでストアを利用できるようにするために呼ばれる特別なReact Reduxコンポーネントを使用することです...
React
React Contextのページで( https://facebook.github.io/react/docs/context.html ) には、上部に警告があります。
Contextは高度で実験的な機能です。APIは将来のリリースで変更される可能性があります。
続いて一番下。
<ブロッククオート明確なコードを書くときにグローバル変数は避けたほうがいいのと同じように、ほとんどの場合、コンテキストの使用は避けるべきです...。
コンポーネントを通してモデルデータを渡すために、コンテキストを使用しないでください。明示的にツリーにデータを通すほうが、はるかに理解しやすいのです...。
では...
Reduxでは、Reactの「コンテキスト」機能を使うことを推奨しています。
store
を「props」で各コンポーネントに渡すのではなく、Reactの「Context」機能を使うことを推奨しています。Reactはその逆を推奨していますが。
また、Dan Abramov(Reduxの生みの親)は現在Facebook(Reactの生みの親)で働いているようで、さらに私を混乱させるだけです。
- 私はこれをすべて正しく読んでいるのでしょうか...?
- この問題についての現在の一般的なコンセンサスは何ですか...?
どのように解決するのですか?
コンテキストは高度な機能であり、変更される可能性があります。いくつかのケースでは、その便利さはデメリットを上回るので、React Redux や React Router などのいくつかのライブラリは、実験的な性質にもかかわらず、それに依存することを選択します。
ここで重要なのは ライブラリ . コンテキストが動作を変更した場合 を調整する必要があります。 . しかし、ライブラリがコンテキストAPIを直接使用するように求めない限り、ユーザーとしてその変更について心配する必要はないはずです。
React Reduxは内部でcontextを使用していますが、この事実を公開APIで公開することはありません。なぜなら、もしコンテキストが変更された場合、コードを更新する負担はあなたではなくReact Reduxにかかるからです。
最終的にReact Reduxはまだ常にpropとしてstoreを渡すことをサポートしているので、もしコンテキストを完全に避けたいのであれば、その選択があります。しかし、私はこれが非現実的であると言うでしょう。
TLDR: 自分が何をしているのか本当に分かっていない限り、コンテキストを直接使うのは避けましょう。たまたま内部でコンテキストに依存しているライブラリを使用することは比較的安全です。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] Reactのこの3つの点は何をするところなのでしょうか?
-
[解決済み] Reduxの非同期フローになぜミドルウェアが必要なのか?
-
[解決済み] mapDispatchToPropsとは何ですか?
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】React Context vs React Redux、それぞれを使うべきタイミングは?[終了しました]
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]
-
[解決済み] <ng-content>が空かどうかを確認する方法は?(これまでのAngular 2+で)