Yaz*_*ash 8 reactjs react-router
我在 Root 组件中有起始页,并添加了包含在 div 中的页眉和页脚组件,但我不知道如何以最佳方式将它们包含在其余路由中。我是否遗漏了什么或使用了错误的方法?
此外,我使用 createBrowserRouter 而不是 BrowserRouter,因为我使用的是文档Picking a Router中提到的数据 API
这是我的代码:
const router = createBrowserRouter([
{
path: '/',
element: (
<div>
<Header />
<Root />
<Footer />
</div>
),
errorElement: <ErrorPage />,
},
{
path: '/products',
element: <ProductsList />,
},
{
path: '/products/:productId',
element: <SingleProductPage />,
},
])
const root = ReactDOM.createRoot(document.getElementById('app'))
root.render(
<React.StrictMode>
<Provider store={store}>
<RouterProvider router={router} />
</Provider>
</React.StrictMode>
Run Code Online (Sandbox Code Playgroud)
当我导航到“/”时,会显示页眉和页脚,但其他路线的情况并非如此。
Oli*_*ssé 16
React Router 有一个布局路由
的概念
,基本上它是一个没有任何路径的路由,不参与 URL 匹配。
它的存在只是为了使在同一布局中包装多个子路由变得更简单
在您的示例中,您可以声明如下布局路线:
import { Outlet } from "react-router-dom";
function Layout() {
return (
<>
<Header />
<Outlet />
<Footer />
</>
);
}
const router = createBrowserRouter([
{
element: <Layout/>,
errorElement: <ErrorPage />,
children: [
{
path: '/',
element: <Root />
},
{
path: '/products',
element: <ProductsList />
},
{
path: '/products/:productId',
element: <SingleProductPage />
}
]
}
])
Run Code Online (Sandbox Code Playgroud)
<Outlet />请注意组件中存在Layout来显示子路由。
| 归档时间: |
|
| 查看次数: |
9923 次 |
| 最近记录: |