문제
다음 코드는 React-router-dom:
import { useContext } from "react"; import { globalC } from "./context"; import { Route, Switch, BrowserRouter } from "react-router-dom"; import About from "./About"; import Dashboard from "./Dashboard"; import Login from "./Login"; import PageNotFound from "./PageNotFound"; function Routes() { const { authLogin } = useContext(globalC); console.log("authLogin", authLogin); return ( <BrowserRouter> <Switch> {authLogin ? ( <> <Route path="/dashboard" component={Dashboard} exact /> <Route exact path="/About" component={About} /> </> ) : ( <Route path="/" component={Login} exact /> )} <Route component={PageNotFound} /> </Switch> </BrowserRouter> ); } export default Routes;
을 사용하여 React 애플리케이션의 보호된 경로 그러나 이 코드는 예상대로 작동하지 않습니다. 사용자는 로그인하지 않아도 보호된 경로에 접근할 수 있습니다.
해결 방법
두 가지 주요 문제가 있습니다. 코드 사용:
다음은 이 두 가지 문제를 모두 해결하는 수정된 버전의 코드입니다.
import { useContext } from "react"; import { globalC } from "./context"; import { Route, Switch, BrowserRouter, Redirect } from "react-router-dom"; import About from "./About"; import Dashboard from "./Dashboard"; import Login from "./Login"; import PageNotFound from "./PageNotFound"; function Routes() { const { authLogin } = useContext(globalC); console.log("authLogin", authLogin); return ( <BrowserRouter> <Switch> <Route path="/" exact> {authLogin ? <Redirect to="/dashboard" /> : <Login />} </Route> <Route path="/dashboard"> {authLogin ? <Dashboard /> : <Redirect to="/" />} </Route> <Route exact path="/About" component={About} /> <Route component={PageNotFound} /> </Switch> </BrowserRouter> ); } export default Routes;
여기 수정된 코드:
위 내용은 React Router Dom에서 보호된 경로를 올바르게 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!