[英]React Router 6 Nest Routes
我有一個受保護的路由,它為使用布局組件的其他組件包裝了我的布局路由。
我遇到了受保護路線無法按預期工作的問題。 如果用戶為空,例如,當我嘗試訪問 localhost:3000/create 時,它應該呈現我的登錄頁面,但我得到一個空白屏幕。
我意識到如果我只有一條包含一個元素道具的路線,它可以正常工作。 我究竟做錯了什么?
<Router>
<Routes>
<Route path='/' element={<LandingPage />} />
<Route path='*' element={<NotFound />} />
<Route element={<ProtectedRoutes />}>
<Route element={<ResponsiveDrawer />}>
<Route path='/dashboard' element={<Dashboard />} />
<Route path='/create' element={<Create />} />
<Route path='/edit/:id' element={<Edit />} />
</Route>
</Route>
</Routes>
</Router>
const ProtectedRoutes = () => {
const { user } = useContext(UserContext);
// console.log(user);
return user !== null ? <Outlet /> : <LandingPage />;
};
ProtectedRoutes
正在渲染一個Outlet
組件,用於渲染嵌套的Route
組件。 ResponsiveDrawer
還需要為其包裝的任何嵌套Route
組件呈現一個Outlet
。
<Router>
<Routes>
<Route path='/' element={<LandingPage />} />
<Route path='*' element={<NotFound />} />
<Route element={<ProtectedRoutes />}> // <-- render Outlet
<Route element={<ResponsiveDrawer />}> // <-- render Outlet
<Route path='/dashboard' element={<Dashboard />} />
<Route path='/create' element={<Create />} />
<Route path='/edit/:id' element={<Edit />} />
</Route>
</Route>
</Routes>
</Router>
渲染ResponsiveDrawer
的路由被渲染到ProtectedRoutes
組件的Outlet
中,嵌套路由被渲染到ResponsiveDrawer
組件的Outlet
中。
示例ResponsiveDrawer
:
const ResponsiveDrawer = () => {
// business logic
return (
<>
{/* UI */}
{/* Drawer UI */}
<Outlet /> // <-- nested routes render here
</>
);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.