【React】useContextの使い方

作成日: 更新日:

開発環境

  • Visual Studio Code:version 1.73.0
  • OS:Windows10
  • react:18.2.0
  • react-dom:18.2.0

ReactのuseContextとは

useContextは、コンテキストを使用するためのReact Hookです。 Reactコンポーネントツリー全体に対して「グローバル」とみなすデータを利用するために設計されています。これにより、最下層までpropsバケツリレーをする必要がなくなります。 Contextを使用することで、コンポーネントツリー間でのデータの橋渡しが容易になり、すべての階層ごとにデータを渡す必要がなくなります。下の階層でもContextに格納されたデータに直接アクセスできるようになります。 公式ドキュメント:https://ja.react.dev/reference/react/useContext

useContextの基本構文

useContextの基本構文は以下の通りです。

1const value = useContext(MyContext);

useContextの使い方

1// App.js
2import './App.css';
3import React, { createContext, useContext } from 'react';
4import ParentComponent from './components/ParentComponent';
5
6// Contextの値を定義
7const contextValue = {
8  info: 'コンテキストの読み込みに成功しました。',
9  context: 'コンテキストはMyContextです。',
10};
11
12// Contextを作成
13const MyContext = createContext(contextValue);
14
15// コンポーネント内でContextを使用するためのカスタムHookを定義
16export function useMyContext() {
17  return useContext(MyContext);
18}
19
20function App() {
21  return (
22    <MyContext.Provider value={contextValue}>
23      <div>
24        <h1>React Hooks Tutorial</h1>
25        <hr />
26        <h2>useContext</h2>
27        <ParentComponent />
28      </div>
29    </MyContext.Provider>
30  );
31}
32
33export default App;
1// components/ChildComponent.js
2import React from 'react';
3import { useMyContext } from '../App'; // App.jsからuseMyContextをインポート
4
5function ChildComponent() {
6  // Contextの値を取得
7  const data = useMyContext();
8
9  return (
10    <>
11        <p>{data.info}</p>
12        <p>{data.context}</p>
13    </>
14  );
15}
16
17export default ChildComponent; // ChildComponentをデフォルトエクスポート
1// components/ParentComponent.js
2import React from 'react';
3import ChildComponent from './ChildComponent';
4
5function ParentComponent() {
6  return <ChildComponent />;
7}
8
9export default ParentComponent;

この構造では、MyContextに格納されたデータが、ツリーの下層のどのコンポーネントでも簡単にアクセスできるようになります。 useMyContextカスタムHookを使用することで、MyContextの値を簡単に取得できます。

おわりに

ReactのuseContextの使い方について説明してきましたが、いかがだったでしょうか。 useContextによってどのコンポーネントでも扱うようなデータ(例えばユーザーのログイン情報など)をバケツリレーにすることなく受け渡しが容易になります。 是非、ReactフックのuseContextを使いこなして、効率的なReactアプリケーションを作成しましょう。

【React】useContextの使い方 | いっしー@Webエンジニア