シングルトンを差し引いてReact propまたはcontext経由で渡すのとは何ですか?require()とpropまたはcontextを介してオブジェクトを渡すことの相違点
それぞれのユースケースは何ですか?
シングルトンを差し引いてReact propまたはcontext経由で渡すのとは何ですか?require()とpropまたはcontextを介してオブジェクトを渡すことの相違点
それぞれのユースケースは何ですか?
モジュールrequire()
(またはimport
)のモジュールでは、どのコンポーネントでも同じオブジェクトが取得されます。コードコンポーネントため
使用モジュールによって異なります
Button
)。getTextColor
)。CommentStore
)。モジュールをインポートするのは、非常に簡単で、一度だけ行うだけです。
モジュールをインポートする際の欠点は、は、それが指す内容をに上書きすることができないことです。したがって、たとえば、テスト中にCommentStore
またはgetTextColor
モジュールを交換することや、「リビングデザインガイド」を簡単に交換することはできません。ユースケースによっては、これが問題になる場合もあれば、そうでない場合もあります。
プロップとして何かを渡すことは、いつも別のものを渡すことを意味します。
comment
):カスタマイズする必要があなたのコンポーネントへ入力ためonClick
)。color
)。小道具を使用するのは、明示的かつカスタマイズ可能であるということです。彼らは疑問がある場合にはのデータを受け渡しする主なメカニズムです。小道具を使用してください。
小道具を使用することの欠点は、小道具を使用していない中間部品を使って多くの小道具を渡すことがあることです。 通常、これはReactでうまくいきます。なぜなら、バグを見つけやすくするために冗長に扱われているからです。しかし、場合によっては、それはイライラすることができます。
コンテキストは、高度なAPIであると控えめ非常にを使用する必要があります。
今後大幅に変更される可能性があります。
currentTheme
): コンテキストは、サブツリーの「グローバル」となって、暗黙的に渡された小道具のようなものです。
currentLanguage
)。(store
)。props
を超える利点は、すべてのコンポーネントを手動で渡す必要がないということです。インポートの利点は、コンポーネントの外からオーバーライドできることです。これは、テスト、サーバーレンダリング、および変更されたものに対して便利です。
context
の欠点は、severe issues with updatesであることです。したがって、は、その値を正しく更新することに依存しません。。たとえば、store
自体は決して変更されず、独自のサブスクリプションメカニズムを持っているため、React Reduxはstore
を安全に通過できます。
一般的にのアプリケーションコードでcontext
を使用することは推奨されません。一部のライブラリでAPIを使用すると、APIが変更されたときに移行が容易になるので便利です。
最後に、私は自然の画家ないんだけど、ここでそれをまとめるための落書きです:
ありがとう、それは私が期待した以上のものです。この質問をする前に、私は実際に還元店について考えていました。しかし、あなたが言及したように、インポートされたモジュールは簡単に交換することはできません。これは大きな洞察です。 – user1164937
この質問は、幅広い種類のです。この質問をしたことについて話すことができる特別な状況がありますか? – azium
@aziumさまざまなコンポーネントからfirebaseにアクセスする方法がわかりませんでした。私は '文脈 'に行くと思う。 – user1164937