React/Hooks/Lesson 13
useContext
30分·theory
このチャプター
5/5
JavaScript
useContext
💡 なぜ学ぶ必要があるのか?
🎯
ログイン情報やテーマ設定などのグローバルなデータを簡単に共有できます。
💼
5段階、10段階にわたるPropsのバケツリレーという複雑さを解消します。
⚡
Reduxのような複雑な状態管理ライブラリを使わずに、中小規模のプロジェクトを素早く構築できます。
🏢 실무에서는
実務では、ユーザー情報・ダークモード設定・言語選択などアプリ全体で必要なデータをuseContextで管理します。新しいエンジニアが入社したとき、最初に学ぶパターンです。
useContextとは?
useContext
Context APIを通じて、コンポーネントツリー全体でデータを共有するHookです。
Props Drillingの問題
Contextを使うと、中間のコンポーネントを介さずに直接アクセスできます。
React 19の変更点
- ▸
use(Context)Hookでより簡潔に使用可能 - ▸Providerなしでコンテキストのデフォルト値を活用可能
💡 💡 Contextのヒント
- ▸カスタムHook: useTheme()やuseAuth()などでラップする
- ▸分離: 頻繁に変わる値と変わらない値でContextを分割する
- ▸代替手段: 複雑なグローバル状態にはZustandがより便利
- ▸React 19:
use(Context)で条件付き読み取りが可能
この概念は、Reactコンポーネント開発において根幹をなすものです。Reactの宣言的UIパラダイムを理解し、propsとstateの違いを明確に区別しましょう。コンポーネントは、同じ入力(props)に対して常に同じ出力(JSX)を返す純粋関数のように動作する必要があります。
⚛️ Reactパターン — useContext
useContextをReactでどのように使うか、コードを交えてステップごとに学びましょう。
1
📦
1. Contextを作成する
グローバルに共有するデータストア
const ThemeContext = createContext('light');
↓
2
🎁
2. Providerでラップする
値を提供するツリーのスコープを指定する
<ThemeContext.Provider value="dark">
<App />
</ThemeContext.Provider>
↓
3
📥
3. useContextで購読する
どの深さの子コンポーネントからでも直接アクセス可能
const theme = useContext(ThemeContext);
↓
4
💡
4. いつ使うか
テーマ・ログインユーザー・言語設定など、本当にグローバルな状態にのみ使用する
🌍 useContext — グローバル状態
コードを直接編集すると、0.7秒後に自動で反映されます。React 18 + Babelでブラウザ上で即座に実行できます。
🖥️ 実行結果 — レンダリングされたReactコンポーネント
✏️ React 코드 수정하기 (클릭해서 열기)
⚛️ React 18 + Babel Standalone — まず結果を確認し、エディタで自由に編集できます。
確認クイズ
useContextのデメリットは何ですか?
先に読むとよい概念: カスタム Hooks
次のおすすめ: React Router