小编gin*_*boy的帖子

如何通过react-router-dom V6和typescript使用受保护的路由?

我正在尝试实施受保护的路线,以仅允许登录的用户访问我的应用程序。我编写的代码似乎有效,当我尝试在未登录的情况下访问主页时,我被重定向到我的登录页面,但是一旦我登录,我可以访问该页面,但我不会呈现,并且出现以下错误:点击此处查看错误

我尝试了多种方法,将元素包装在受保护的路由中似乎是 V6 的处理方式,但它似乎对我不起作用:

我的受保护路线

interface PrivateRouteProps extends RouteProps {
}

const PrivateRoute: React.FC<PrivateRouteProps> = ({...rest}) => {
    const auth = useAuth();

    if (auth?.user === null) {
        return <Navigate to='/'/>;
    }
    return <Route {...rest}/>;
};

export default PrivateRoute;
Run Code Online (Sandbox Code Playgroud)

我的应用程序(路线使用)

function App() {
    useEffect(() => {
      API
        .get('api', '/reservation', {})
        .then(response => {
          console.log(response);
        })
        .catch(error => {
          console.log(error.response);
        });

    }, [])
    return (
      <Router>
        <Routes>
          <Route path='/' element={<LoginPage />}/>
          <Route path='/consultAndReserve' element={<PrivateRoute><Navbar/><ConsultReserve/></PrivateRoute>} />
          <Route path='/consultAndReserve/:date' element={<><Navbar/><ConsultReserveWithDate/></>}/>
          <Route path='/myReservations'  element={<><Navbar/><Reservations/></>}/> …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs react-router-dom

7
推荐指数
1
解决办法
7946
查看次数

标签 统计

react-router-dom ×1

reactjs ×1

typescript ×1