useContext - Hashimoto-Noriaki/react-calendar GitHub Wiki
//型の定義部分 この2つを セットでコンテキストに渡すための型
export type LoginUserContextType = {
loginUser: LoginUserType;//loginUser: 現在ログインしているユーザーの情報(id, name)
setLoginUser: (user: LoginUserType) => void;//setLoginUser: その情報を更新するための関数
}
//初期値は undefined(使うときに「Provider で囲まれていない」ミスを検出できる)createContextはグローバルに使える値を定義
//React の Context(共有データの仕組み)を定義して初期化している処理
export const LoginUserContext = createContext<LoginUserContextType | undefined>(undefined);
// LoginUserProvider 実際の状態(ユーザー情報)を管理し、アプリ全体に配布
//LoginUserProvider とは? React の コンポーネント
役割は:「ログイン中のユーザー情報を管理して、アプリ全体に共有するための親コンポーネント」
export const LoginUserProvider = ({ children }: { children: ReactNode }) => {
const [loginUser, setLoginUser] = useState<LoginUserType>({
id:0,
name:"",
});
}
<LoginUserContext.Provider value={ loginUser,setLoginUser}>
{children}
</LoginUserContext.Provider>
return
Reactの Context API を使って、loginUser と setLoginUser をアプリ全体に共有(提供)している処理です。
return (
<LoginUserContext.Provider value={{ loginUser, setLoginUser }}>
{children}
</LoginUserContext.Provider>
);