コンテキストの定義と目的コンテキストは、コンポーネント ツリーにプロパティを明示的に渡すことなく、コンポーネント間でデータを共有する方法を提供します。 アプリケーション シナリオで共有する必要があるデータは何ですか?
使い方1. コンテキストの作成と初期化 定数MyContext = createContext(デフォルト値); Context オブジェクトを作成します。 React がこの Context オブジェクトをサブスクライブするコンポーネントをレンダリングすると、コンポーネントはコンポーネント ツリー内で自身に最も近い一致する 2. コンテキストを購読する <MyContext.Provider value={/* 何らかの値*/> プロバイダーは ここでは2つの関連する概念がある
3. Conextを使用する 3.1 Reactコンポーネントでの使用 定数値 = useContext(MyContext); 消費コンポーネント内のコンテキストを参照します。 value は、コンポーネント ツリー内で自身に最も近い一致するプロバイダーから現在のコンテキスト値を読み取ります。 3.2 純粋機能コンポーネントでの使用 純粋に機能的なコンポーネントでは、 <MyContext.コンシューマー> {value => /* コンテキスト値に基づいてレンダリング */ </MyContext.Consumer> 4. コンテキストの更新 4.1 上から下へのコンテキストの更新 トップダウン更新とは、プロバイダーの値を更新することを指します。プロバイダーの //アプリ.js // .... デフォルト関数App()をエクスポートする{ //... // const {contextValue, setContextValue} = React.useState(initialValue); // コンテキスト値を更新する関数 関数 updateContext(newValue) { // ... // contextValue、ConsumerComponent1、ConsumerComponent2、ConsumerComponent3、ConsumerComponent11 を更新すると、再レンダリングがトリガーされます。 setContextValue(新しい値) } ... 戻る ( <アプリ> <MyContext.Provider 値 = {contextValue}> <コンシューマーコンポーネント1> <コンシューマーコンポーネント11> // .... </コンシューマーコンポーネント11> </コンシューマーコンポーネント1> <コンシューマーコンポーネント2 /> <コンシューマーコンポーネント3 /> </MyContext.Provider> </アプリ> ); } 4.2 ボトムアップ(消費コンポーネントから)コンテキスト更新 場合によっては、 // アプリ.js デフォルト関数App()をエクスポートする{ ... const {contextValue, setContextValue} = React.useState(initialValue); // コンテキスト値を更新する関数 関数 updateContext(newValue) { // ... // contextValue、ConsumerComponent1、ConsumerComponent2、ConsumerComponent3、ConsumerComponent11 を更新すると、再レンダリングがトリガーされます。 setContextValue(新しい値) } ... 戻る ( <アプリ> <MyContext.Provider 値 = {contextValue}> <コンシューマーコンポーネント1> <ConsumerComponent11 updateValue={updateContext}> // コールバック プロパティを通じて ConsumerComponent11 の contextValue を更新します。contextValue は最上位レベルの Provider の値に属しているため、ConsumerComponent1、ConsumerComponent2、および ConsumerComponent3 の再レンダリングもトリガーされます。 </コンシューマーコンポーネント11> </コンシューマーコンポーネント1> <コンシューマーコンポーネント2 /> <コンシューマーコンポーネント3 /> </MyContext.Provider> </アプリ> ); } 4.3 プロバイダのネスト 場合によっては、同じコンテキストのプロバイダーがネストされ、2 つのコンテキストとして認識されることがあります。違いは、 ... React のコンテキスト値を設定します。 // コンテキスト値を更新する関数 関数 updateContext(newValue) { // ... // contextValue、ConsumerComponent1、ConsumerComponent2、ConsumerComponent3、ConsumerComponent11 を更新すると、再レンダリングがトリガーされます。 setContextValue(新しい値) } ... 戻る ( <アプリ> <MyContext.Provider 値 = {contextValue}> <コンシューマーコンポーネント1> <コンシューマーコンポーネント11 /> </コンシューマーコンポーネント1> <コンシューマーコンポーネント2> ... // ConsumerComponent21 と ConsumerComponent22 の値のみを更新する場合 const localContextValue = useContext(MyContext); // 上位層プロバイダーから現在の値を取得します const {tempContextValue, setTempContextValue} = React.useState(localContextValue); 関数 updateTempContext(newValue) { // ここでの更新は ConsumerComponent21 と ConsumerComponent22 の再レンダリングのみをトリガーします setTempContextValue(newValue); } // ここで ConsumerComponent21 と ConsumerComponent22 間でデータを共有するための新しいプロバイダーを作成します。 <MyContext.Provider 値 = {tempValue}> <コンシューマーコンポーネント21> // ConsumerComponent21 で useContext(MyContext) 経由でサブスクライブします // 取得される値は、自身に最も近い一致するプロバイダーから読み取られたコンテキスト値、つまり tempValue です </コンシューマーコンポーネント21> <コンシューマーコンポーネント22> </コンシューマーコンポーネント22> </MyContext.Provider 値 = {contextValue}> </コンシューマーコンポーネント2> <コンシューマーコンポーネント3 /> </MyContext.Provider> </アプリ> ); 公式ドキュメント 公式ドキュメントについては、以下の基本および上級チュートリアルを参照してください。 フック API インデックス – React (reactjs.org) コンテキスト – React (reactjs.org) 上記は、React における Context アプリケーション シナリオの分析の詳細な内容です。React における Context の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Ubuntu 18.04 に MySQL をインストールする (グラフィカル チュートリアル)
>>: Windows 10 での MySQL 8.0 のダウンロードとインストール構成のグラフィック チュートリアル
目次特徴利点インストールとコマンド設定ファイルプロキシモードとリバースプロキシ構成フォワードプロキシ...
WeChatアプレットはスクロールビューを使用して左右のリンクを実現します。参考までに、具体的な内容...
Linux でファイルを見つけたいのに、その場所がわからないことがよくあります。次のコマンドを使用し...
この記事の例では、コンピュータカメラを呼び出して写真機能を実現するためのvueの具体的なコードを参考...
1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...
序文JavaScriptはWebフロントエンドで広く使われている言語の一つであり、Webアプリケーシ...
1. Apacheをインストールする $ sudo apt update && su...
この記事の例では、アコーディオン効果を実現するためのVueの具体的なコードを参考までに共有しています...
この記事では、参考までにMySQL 5.7.13 winx64のインストールと設定方法のグラフィック...
1.MySQL関数1. 数学関数PI() # 円周率 (pi) の値を返します。デフォルトの小数点...
目次序文 - Vue ルーティング1. 最も基本的なルーティング構成1. router/index....
主にその構造といくつかの重要な特性について説明します。少しずつ改善しながら紹介していきます。 1) ...
配列メソッドJavaScript には多くの配列メソッドが用意されています。次の図は、ほとんどの配列...
MySQL グリーンバージョン設定コードと 1067 エラーMySQL エンコーディングを表示 ...
仮想マシンを使用しているときに、ディスク容量が不足し、継続使用するためにディスクをマウントする必要が...