はじめに
ぴんくうさぎ
Rectを勉強し始めたのだけど、
useContextがよくわからない!!
みどりがめ
useContextは値をグローバルに使用したいときに使用するよ!
今回はuseContextについて詳しく学んでいこう!!
今回作るもの
「taro」の表示をuseContextを使って作成しています。グローバルにどこからでも参照可能です。
useContextの構文
useContextを使用することで、グローバルにデータを管理することができるようになります。
これにより、コンポーネント間のpropsバケツリレーをしなくてもContext内に収容されているデータにアクセスできるようになります。
useContextを使用してグローバルな値管理を行うまでは大きく3ステップです。
日本語で書くと以下のようになります。
//① コンテキストの作成
const コンテキスト名 = createContext();
// ②コンテキストを使用するコンポーネントを定数名.Providerで囲む
<定数名.Provider value={コンテキストに格納する値}>
<コンポーネント />
</定数名.Provider>
// ③コンテキストから値を取り出す
const コンポーネント = () => {
const 定数名 = useContext(Contextオブジェクト)
}
実装例
具体的な実装例を見ていきましょう。
ユーザーデータを保持するContextを作成します。
type User = {
id: number;
name: string;
};
// ユーザーデータを保持するコンテキストを作成する
const userContext = createContext<User | null>(null);
Parentクラスで作成したCOntextに値を渡します。
const Child = () => {
return <GrandChild />;
};
export const Parent = () => {
const user: User = {
id: 1,
name: "taro"
};
return (
<userContext.Provider value={user}>
<Child />
</userContext.Provider>
);
};
GrandChildクラスでContextから値を取り出しています。
const GrandChild = () => {
const user = useContext(userContext);
return <p>こんにちは!{user.name}さん</p>;
};
index.tsxでParentを表示します。
import React from "react";
import ReactDOM from "react-dom/client";
import { Parent } from "./components/ContextSample";
const rootElement = document.getElementById("root")!;
const root = ReactDOM.createRoot(rootElement);
root.render(
<React.StrictMode>
<Parent />
</React.StrictMode>
);
終わりに
本記事はここまでとなります。
最後に私がReact学習に使用したおすすめ教材を紹介します。
以下の2つのUdemyがおすすめです。書籍よりもずっと効率よく必要なスキルを取得できます。多くの人に愛されベストセラーを獲得しています。もしよかったら活用してみてください!
ご覧いただきありがとうございました。ご指摘等がございましたら頂けますと嬉しいです。
引き続き、プログラミングについて定期的に発信していきますのでよろしくお願いします!
また、もしよろしければtwitterもフォローしていただけると嬉しいです!🐢
コメント