useContext フックは、Context.ConsumerContext の値に直接アクセスできるようにする組み込みの React フックです。 >コンポーネント。これにより、コンポーネント ツリーの各レベルで props を手動で渡すことなく、ユーザー認証、テーマ設定、言語設定など、React アプリケーション内のグローバルまたは共有データへのアクセスが簡素化されます。
Context を理解することが重要です。 React では、Context は、すべてのレベルで props を手動で渡すことなく、コンポーネント ツリー全体で構成や状態などの値を共有する方法を提供します。
useContext フックは、単一の引数、Context オブジェクトを受け入れ、現在のコンテキスト値を返します。
const contextValue = useContext(MyContext);
MyContext: これは、React.createContext() を使用して作成したコンテキスト オブジェクトです。
contextValue: これはコンテキストが提供する値です。オブジェクト、文字列、数値など、何でもかまいません。
const MyContext = React.createContext('default value');
const App = () => { const user = { name: 'John Doe', age: 30 }; return ( <MyContext.Provider value={user}> <ComponentA /> </MyContext.Provider> ); };
const ComponentA = () => { const user = useContext(MyContext); // Access the context value return ( <div> <p>{user.name}</p> <p>{user.age}</p> </div> ); };
const contextValue = useContext(MyContext);
アプリを ThemeContext.Provider でラップして、値 (現在のテーマ) を指定します。
const MyContext = React.createContext('default value');
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 サイトの他の関連記事を参照してください。