← inaro.devAI駆動開発 学習ツール
中級

Context

なぜ学ぶか: 「ログインユーザーの情報を、深い階層の部品でも使いたい」— propsで5階層バケツリレーするのは大変です。Contextは「共有データの放送局」— 途中の階層を飛ばして届けられます。例で見てみましょう。

まずはこの例を見てみましょう

// ① チャンネルを作る
const ThemeContext = createContext("light");

// ② 放送局: 配下のすべてに theme を配る
function App() {
  return (
    <ThemeContext.Provider value="dark">
      <DeepCard />   {/* 何階層深くてもOK */}
    </ThemeContext.Provider>
  );
}

// ③ 受信機: 途中の階層を飛ばして直接受け取る
function DeepCard() {
  const theme = useContext(ThemeContext);
  return <p>現在のテーマ: {theme}</p>;
}

間の階層はthemeを知らなくても、深い部品に直接届きます。これが「階層飛ばし」です。

Context=propsを使わないデータ配布網

例のProvider(放送局)で値を配り、useContext(受信機)でどの深さからでも受け取ります。

使いどころは「全体で共有する少数のもの」

テーマ(ダークモード)・ログインユーザー・言語設定が三大定番。このアプリのテーマ切替も同じ発想です。

何でもContextは間違い

頻繁に変わるデータや、一部でしか使わないデータには不向きです。「まずリフトアップ、それが辛ければContext」の順で考えます。

ステップ 1 / 3

※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。