create-react-app が生成した App.tsx に useContext を使って Login 機能を実装するための概念を説明する雑なソースコード。

App.tsx

import React, { useContext, useState } from 'react';
import './App.css';
 
interface User {
  account: string
}
const UserContext = React.createContext<User | null>(null);
 
function App() {
  const [user, setUser] = useState<User | null>(null);
  const [account, setAccount] = useState("");
  const [password, setPassword] = useState("");
  const login = () => {
    console.log("login");
    if(account === "miyazato" && password === "hoge"){
      setUser({account: "miyazato"});
    }
  };
  const logout = () => {
    setUser(null);
  };
 
  return (
    <div className="App">
      <header className="App-header">
        <UserContext.Provider value={user}>
          <label>
            Account:
            <input onChange={ (event) => setAccount(event.target.value) }/>
          </label>
          <label>
            Password:
            <input onChange={ (event) => setPassword(event.target.value) }/>
          </label>
          <button onClick={login}>Login</button>
          <button onClick={logout}>Logout</button>
          <Content/>
        </UserContext.Provider>
      </header>
    </div>
  );
}
 
function Content() {
  const user = useContext(UserContext);
  return (
    <div>
      { 
        user ?
      <span>LoginUser: {user?.account}</span>
      :
      <span>LoginUser: (Not Logged In)</span>
      }
    </div>
  );
}
 
export default App;