はじめに
こんにちは!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にデータを提供します。Provider
のvalue
属性に渡したいデータを指定します。
<MyContext.Provider value="Hello, World!">
<MyComponent />
</MyContext.Provider>
ここで、MyComponent
は、value
に渡されたデータを受け取ることができます。
3. useContextでデータを受け取る
useContext
を使うことで、Contextに渡されたデータを受け取ることができます。
const message = useContext(MyContext);
console.log(message); // "Hello, World!"
これで、MyComponent
はvalue
として渡された「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のコンポーネントで状態を管理する方法は、useState
やuseReducer
を使って局所的に管理する方法がありますが、状態が複数のコンポーネントで共有される場合、useContext
が非常に便利です。props
をいちいち渡す手間が省けるため、コンポーネントツリーが深くなった場合にもコードがスッキリします。
useContextを使うシーン
- テーマの切り替え: ダークモードやライトモードなど、アプリケーション全体でテーマを変更したい場合に使います。
- ユーザー認証情報: アプリ全体でユーザーのログイン状態や情報を共有する場合に便利です。
- 言語設定: ユーザーが選択した言語に基づいてアプリケーション内のテキストを切り替える場合に利用できます。
まとめ
useContext
は、Reactで状態を簡単にコンポーネント間で共有できる非常に便利なフックです。Provider
を使ってデータを渡し、useContext
で受け取ることで、複雑なprops
の受け渡しを避け、シンプルにデータを共有することができます。
このフックを使うことで、アプリケーションの状態管理がより簡単で効率的になります。Reactで状態管理を行う際には、useContext
を覚えておくと大変役立つので、ぜひ実践してみてください!
さらに詳しく学ぶには、Reactの公式ドキュメントをチェックしてみてくださいね。
React公式ドキュメント: useContext