這是本文件的舊版!


React Hook - useContext

我在Study React所撰寫的第一個範例是系統的登入與登出,而登入狀態需要由上層元件傳遞給登入與登出元件做修改。在這範例中,由於上層元件與登入元件只有一層,所以我可以透過建構元將狀態傳遞過去;然而登出元件與上層元件相差太多層,傳遞並不是那麼容易。

在React Hook推出之前,有flux、Redux,或者是後來推出的Context,都可以解決這個問題;而本篇要介紹的useContext,我認為比前面幾個都還容易達到需求。

export const AuthContext = React.createContext(null);

function App(){

const [ state, setState ] = useState(false);
let route_target;
if( !state ) {
  route_target = <Route path="/" name="Login" component={LoginForm}/>;
} else
  route_target = <Route path="/" name="Home" component={DefaultLayout} />;
return (
  <AuthContext.Provider value={[state, setState]}>
    <HashRouter>
      <Switch>
      {route_target}
      </Switch>
    </HashRouter>
  </AuthContext.Provider>
);

}