ホームページ > ウェブフロントエンド > jsチュートリアル > React の useContext フックをマスターする: 共有状態管理の簡単なガイド

React の useContext フックをマスターする: 共有状態管理の簡単なガイド

Susan Sarandon
リリース: 2025-01-05 03:31:38
オリジナル
675 人が閲覧しました

Mastering React

React で Context フックを使用する

useContext フックは、Context.ConsumerContext の値に直接アクセスできるようにする組み込みの React フックです。 >コンポーネント。これにより、コンポーネント ツリーの各レベルで props を手動で渡すことなく、ユーザー認証、テーマ設定、言語設定など、React アプリケーション内のグローバルまたは共有データへのアクセスが簡素化されます。


React のコンテキストとは何ですか?

useContext に入る前に、

Context を理解することが重要です。 React では、Context は、すべてのレベルで props を手動で渡すことなく、コンポーネント ツリー全体で構成や状態などの値を共有する方法を提供します。

  • Context.Provider は、コンポーネント ツリーの一部をラップし、そのツリー内のすべてのコンポーネントに値を提供するために使用されます。
  • useContext により、コンポーネントは Context.Provider. によって提供される値を使用できるようになります。

useContext の構文

useContext フックは、単一の引数、Context オブジェクトを受け入れ、現在のコンテキスト値を返します。

const contextValue = useContext(MyContext);
ログイン後にコピー
ログイン後にコピー
  • MyContext: これは、React.createContext() を使用して作成したコンテキスト オブジェクトです。

  • contextValue: これはコンテキストが提供する値です。オブジェクト、文字列、数値など、何でもかまいません。


useContext の仕組み

  1. コンテキストの作成: まず、React.createContext() を使用して Context を作成します。このコンテキストにはデフォルト値が保持されます。
   const MyContext = React.createContext('default value');
ログイン後にコピー
ログイン後にコピー
  1. コンテキストを提供します: Context.Provider コンポーネントは、ツリー内のコンポーネントに値を提供するために使用されます。このツリー内のコンポーネントは、useContext を使用してコンテキスト値にアクセスできます。
   const App = () => {
     const user = { name: 'John Doe', age: 30 };

     return (
       <MyContext.Provider value={user}>
         <ComponentA />
       </MyContext.Provider>
     );
   };
ログイン後にコピー
  1. コンテキストの消費: 子コンポーネント内では、useContext を使用してコンテキストから値にアクセスします。
   const ComponentA = () => {
     const user = useContext(MyContext); // Access the context value

     return (
       <div>
         <p>{user.name}</p>
         <p>{user.age}</p>
       </div>
     );
   };
ログイン後にコピー
    この例では、ComponentA は、props 経由で明示的に受信しなくても、ユーザー オブジェクト (MyContext.Provider によって提供される) にアクセスできます。

例: テーマの切り替えに useContext を使用する

これは、単純なテーマ切り替え機能に useContext を使用する例です。

ステップ 1: コンテキストを作成する

const contextValue = useContext(MyContext);
ログイン後にコピー
ログイン後にコピー

ステップ 2: コンテキストを提供する

アプリを ThemeContext.Provider でラップして、値 (現在のテーマ) を指定します。

   const MyContext = React.createContext('default value');
ログイン後にコピー
ログイン後にコピー

ステップ 3: コンテキストを使用する

ComponentA では、useContext を使用して現在のテーマにアクセスできます。

const ComponentA = () => {
  const テーマ = useContext(ThemeContext); // 現在のテーマにアクセスします

  戻る (
    <div>



<ul>
<li>
<strong>説明:</strong>

<ul>
<li>
アプリはテーマのコンテキスト値 (「ライト」または「ダーク」) を提供します。</li>
<li>
ComponentA は useContext を使用して現在のテーマを使用し、それに応じてスタイルを変更します。</li>
</ul>


</li>

</ul>


<hr>

<h3>
  
  
  <strong>コンポーネント内の複数のコンテキスト</strong>
</h3>

<p>単一のコンポーネントで複数のコンテキストを使用できます。たとえば、ThemeContext と UserContext の両方を使用します:<br>
</p>

<pre class="brush:php;toolbar:false">const UserContext = createContext({ name: 'Alice' });
const ThemeContext = createContext('light');

const App = () => {
  戻る (
    <ThemeContext.Provider value="dark">
      <UserContext.Provider 値={{ 名前: 'ボブ' }}>
        <コンポーネント />
      </UserContext.Provider>
    </ThemeContext.Provider>
  );
};

const コンポーネント = () => {
  const テーマ = useContext(ThemeContext);
  const ユーザー = useContext(UserContext);

  戻る (
    <div>




<hr>

<h3>
  
  
  <strong>useContext を使用する場合</strong>
</h3>

<p><strong>useContext</strong> フックは、次の場合に最も役立ちます。</p>

<ol>
<li>
<strong>プロップのドリル加工の回避:</strong> コンポーネントの多くのレイヤーにプロップを深く渡すと、面倒になる可能性があります。コンテキストを使用すると、これを回避し、ツリーの任意のレベルのコンポーネントが共有値を使用できるようにすることができます。</li>
<li>
<strong>グローバル状態管理:</strong> アプリのさまざまな部分にある多くのコンポーネントからグローバル状態 (テーマ、認証、ユーザー設定など) にアクセスできるようにする必要がある場合。</li>
<li>
<strong>コンポーネント間でのデータの共有:</strong> 複数のコンポーネント間で共通データ (ユーザー情報、設定、構成など) を共有する必要がある場合、useContext がクリーンなソリューションを提供します。</li>
</ol>


<hr>

<h3>
  
  
  <strong>パフォーマンスに関する考慮事項</strong>
</h3>

<p><strong>useContext</strong> は強力ですが、コンテキスト値が変更されると再レンダリングが発生する可能性があります。コンテキスト値が更新されるたびに、そのコンテキストを使用するすべてのコンポーネントが再レンダリングされます。これを最適化するには:</p>
<ul>
<li>
<strong>コンテキスト値をメモ化する</strong>: コンテキスト値自体が不必要に変更されないようにします。</li>
<li>
<strong>コンテキスト プロバイダーの分割</strong>: アプリに複数の共有データがある場合は、それらを異なるコンテキストに分割して、不必要な再レンダリングを最小限に抑えます。</li>
</ul>


<hr>

<h3>
  
  
  <strong>useContext フックの概要</strong>
</h3>

<ul>
<li>
<strong>useContext</strong> を使用すると、機能コンポーネントでコンテキスト値を直接使用できます。</li>
<li>React.createContext() を使用して <strong>Context</strong> を作成し、<strong>useContext</strong> を使用して <strong>Context.Provider.</strong>
</li>プロップのドリル作業を回避し、プロップを手動で渡すことなく複数のコンポーネント間でデータを共有するのに役立ちます。<li>
</li>コンテキスト消費のパフォーマンスを最適化するには、コンテキスト値とメモ化を注意深く管理する必要があります。<li>
</li>


</ul>

<hr>
  
  
  <h3>結論<strong>
</strong>

</h3>
<p>useContext<strong> フックは、React アプリケーションで共有状態を管理するために不可欠なツールです。これにより、コンテキスト値を使用するプロセスが簡素化され、不必要な prop ドリル作業が回避され、React コードがより読みやすく、保守しやすくなります。 useContext を活用することで、ツリー内のどのコンポーネントからも簡単にアクセスできる共有状態を備えた、より柔軟でスケーラブルなアプリケーションを作成できます。</strong>


</p>


          <hr>

            
        </div>
ログイン後にコピー

以上がReact の useContext フックをマスターする: 共有状態管理の簡単なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート