コンテキストを利⽤するためのHookで、ツリー全体でデータを共有するために使⽤する。
useContextを使用することでpropsを利用することなく異なる階層のコンポーネントとデータの共有を行うことができる。って書いて歩けおよくわからん。難解。
useContext は 「情報をまとめて、どこからでも使えるようにする仕組み」(ログイン情報とかで使う)
イメージ
イメージは学校のロッカー。
例えば、学校のクラスで 「みんなが使う共通のロッカー」 があるとする。 ロッカーには 教科書、ノート、筆箱 など、みんなが使うものが入ってる。 生徒は 自分の席からロッカーの中のものを取り出せる。この「共通のロッカー」が useContext 。 一度ロッカー(Context)に必要な情報を入れておけば、どこからでもすぐに取り出して使える!
プログラムでの useContext の使い方
例えば、アプリの 「テーマ設定」(明るい or 暗い)をどこでも使えるようにしたいとする。
ロッカー(Context)を作る
const ThemeContext = React.createContext("light"); // みんなが使う「テーマのロッカー」
↑ これで「テーマ情報を入れる共通のロッカー」ができた
ロッカーにテーマを入れる
<ThemeContext.Provider value="dark">
<App /> {/* みんなが「暗いテーマ」を使える */}
</ThemeContext.Provider>
↑ value="dark" だから 「アプリ全体のテーマは暗い!」 と決めた
どこでもテーマを取り出せる
const theme = useContext(ThemeContext);
console.log(theme); // "dark"
↑ これで「ロッカーからテーマを取り出して使う」ことができる!
useContextは「共通のロッカー」を作って、みんなが使えるようにする。
一度 Provider で情報を入れたら、どこからでも useContext で取り出せる。
よく使う情報(テーマ、ユーザー情報など)を管理するのに便利!
これを使えば、毎回 props(親から子へ情報を渡す仕組み)を使わなくても、どこからでもデータが使えて スッキリしたコード になる