我想用React Router Domv6.2.2
在父组件中渲染子组件,这就是我尝试的方法,但浏览器最终什么也没显示:
const MainLayout = props => {
return (
<div className='main-layout'>
<Header />
<div className='main'>
{props.children}
</div>
</div>
)
}
App.js:
function App() {
return (
<div className="App">
<BrowserRouter>
<Routes>
<Route exact path="/" render={() => (
<MainLayout>
<Homepage />
</MainLayout>
)} />
</Routes>
</BrowserRouter>
您应该使用Route
的element
属性来渲染组件,因为您使用的是React Router Domv6
、component
和render
用于早期版本,或者简单地将其封装在Route
:中
export default function App() {
return (
<div className="App">
<BrowserRouter>
<Routes>
<Route exact path="/">
<MainLayout>
<Homepage />
</MainLayout>
</Route>
</Routes>
</BrowserRouter>
</div>
);
}
function App() {
return (
<div className="App">
<BrowserRouter>
<Routes>
<Route exact path="/" element={<MainLayout />}>
<Route path="/home" element={<Homepage />} />
</Route>
</Routes>
</BrowserRouter>
</div>
)
}
并在MainLayout组件中添加Outlet
组件
const MainLayout = props => {
return (
<>
<div className="main-layout">
<Header />
<div className="main">{props.children}</div>
</div>
<Outlet />
</>
)
}