[英]react router v6 and nest UI and URL
我試圖弄清楚這段代碼的含義:
<Routes>
<Route path="/" element={<Dashboard />}>
<Route
path="messages"
element={<DashboardMessages />}
/>
<Route path="tasks" element={<DashboardTasks />} />
</Route>
<Route path="about" element={<AboutPage />} />
</Routes>
https://reactrouter.com/docs/en/v6/components/route
如果位置是/
,那么渲染的 UI 將是
<Dashboard />
而如果位置是/messages
,那么渲染的 UI 將是
<Dashboard >
<DashboardMessages />
<Dashboard />
/tasks
和/about
的邏輯相同。
我的理解正確嗎?
你的理解是部分正確的。 給定以下路由代碼:
<Routes>
<Route path="/" element={<Dashboard />}>
<Route path="messages" element={<DashboardMessages />} />
<Route path="tasks" element={<DashboardTasks />} />
</Route>
<Route path="about" element={<AboutPage />} />
</Routes>
正確的是,當 URL 路徑為"/"
時,僅呈現Dashboard
組件。 這就是所謂的布局路線。 布局路由通常提供一些通用組件生命周期和/或通用 UI 布局,即頁眉和頁腳、導航欄、側邊欄等。
當 URL 路徑為"/messages"
或"/tasks"
時, Dashboard
組件以及專門匹配的路由內容DashboardMessages
或DashboardTasks
被呈現到由Dashboard
呈現的Outlet
組件中。
請注意, "/about"
路線位於"/"
儀表板布局路線之外。 當路徑為"/about"
時,僅呈現AboutPage
。
這是一個示例布局路由組件:
import { Outlet } from 'react-router-dom';
const AppLayout = () => {
... common logic ...
return (
<>
<Header />
<Outlet /> // <-- nested routes render element here
<Footer />
</>
);
};
const NavbarLayout = () => (
<>
<Navbar />
<Outlet /> // <-- nested routes render element here
</>
);
...
<Routes>
<Route element={<AppLayout />}>
... routes w/ header/footer & w/o navbar
<Route element={<NavbarLayout />}>
... routes also w/ navbar
</Route>
...
</Route>
... routes w/o header/footer
</Routes>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.