useContextを簡単に理解しよう!【初心者向け】React-Hooks講座

はじめに

こんにちは!
useContextって聞いたことありますか?
useContextは、Reactで状態をコンポーネント間で簡単に共有できる便利なフックの一つです。propsを使わずにデータをやり取りできるため、アプリケーションを構築する際にとても役立ちます。

今回は、useContextの基本的な使い方をわかりやすく解説しますので、初心者でもすぐに使いこなせるようになるはずです!

useContextとは?

Reactで状態を管理する方法にはいくつかのアプローチがありますが、useContextはコンポーネント間で状態を簡単に共有するための手段です。

例えば、ユーザーの認証情報やテーマの設定など、複数のコンポーネントで同じデータを使いたい場合に非常に便利です。useContextを使うと、propsをいちいち渡す必要がなくなります。

useContextの基本的な使い方

useContextを使うためには、まずContextを作成し、データをそのContextを通じて渡します。その後、受け取りたいコンポーネントでuseContextフックを使ってデータを取得します。

1. Contextの作成

最初に、createContextを使ってContextを作成します。このContextには、後で渡すデータを格納します。

const MyContext = React.createContext();

2. Providerでデータを提供

作成したMyContext.Providerを使って、Contextにデータを提供します。Providervalue属性に渡したいデータを指定します。

<MyContext.Provider value="Hello, World!">
  <MyComponent />
</MyContext.Provider>

ここで、MyComponentは、valueに渡されたデータを受け取ることができます。

3. useContextでデータを受け取る

useContextを使うことで、Contextに渡されたデータを受け取ることができます。

const message = useContext(MyContext);
console.log(message); // "Hello, World!"

これで、MyComponentvalueとして渡された「Hello, World!」を表示できるようになります。

実際に使ってみよう!

では、もう少し実際的な例でuseContextの使い方を見てみましょう。次の例では、テーマ(darkまたはlight)をコンポーネント間で共有する方法を説明します。

import React, { createContext, useContext } from 'react';

// 1. Contextの作成
const ThemeContext = createContext();

// 2. Providerでテーマ情報を渡す
const ThemeProvider = ({ children }) => {
  const theme = 'dark'; // 現在のテーマを設定
  return (
    <ThemeContext.Provider value={theme}>
      {children}
    </ThemeContext.Provider>
  );
};

// 3. useContextでテーマ情報を受け取る
const ThemedComponent = () => {
  const theme = useContext(ThemeContext); // Contextからテーマを取得
  return <h1>現在のテーマは {theme} です。</h1>;
};

// 4. アプリケーション全体でThemeProviderを使う
const App = () => {
  return (
    <ThemeProvider>
      <ThemedComponent />
    </ThemeProvider>
  );
};

export default App;

実行結果

このコードを実行すると、ThemedComponent"現在のテーマは dark です"と表示します。ThemeProviderによって、ThemeContextにテーマ情報(ここではdark)が渡され、それをuseContextを使ってThemedComponent内で取得しているのです。

useContextを使う理由

Reactのコンポーネントで状態を管理する方法は、useStateuseReducerを使って局所的に管理する方法がありますが、状態が複数のコンポーネントで共有される場合、useContextが非常に便利です。propsをいちいち渡す手間が省けるため、コンポーネントツリーが深くなった場合にもコードがスッキリします。

useContextを使うシーン

  • テーマの切り替え: ダークモードやライトモードなど、アプリケーション全体でテーマを変更したい場合に使います。
  • ユーザー認証情報: アプリ全体でユーザーのログイン状態や情報を共有する場合に便利です。
  • 言語設定: ユーザーが選択した言語に基づいてアプリケーション内のテキストを切り替える場合に利用できます。

まとめ

useContextは、Reactで状態を簡単にコンポーネント間で共有できる非常に便利なフックです。Providerを使ってデータを渡し、useContextで受け取ることで、複雑なpropsの受け渡しを避け、シンプルにデータを共有することができます。

このフックを使うことで、アプリケーションの状態管理がより簡単で効率的になります。Reactで状態管理を行う際には、useContextを覚えておくと大変役立つので、ぜひ実践してみてください!

さらに詳しく学ぶには、Reactの公式ドキュメントをチェックしてみてくださいね。
React公式ドキュメント: useContext

関連する記事はこちら↓↓


タイトルとURLをコピーしました