1. ホーム
  2. javascript

[解決済み] ReduxでReact?コンテキスト」問題はどうなる?

2023-03-02 10:16:31

質問

私は通常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: 自分が何をしているのか本当に分かっていない限り、コンテキストを直接使うのは避けましょう。たまたま内部でコンテキストに依存しているライブラリを使用することは比較的安全です。