app.js
import { Box } from '@mui/material';
import { BrowserRouter, Route, Routes } from 'react-router-dom'
// Components
import Home from './components/Home';
import Layout from './Layout';
const App = () => {
return (
<Box>
<BrowserRouter>
<Layout>
<Routes>
<Route exact path="/" component={Home} />
</Routes>
</Layout>
</BrowserRouter>
</Box>
);
}
export default App;
版面设计
import React from 'react';
import { Outlet } from 'react-router-dom';
//components
import Navbar from './components/Navbar';
const Layout = () => {
return (
<React.Fragment>
<Navbar />
<Outlet />
</React.Fragment>
);
}
export default Layout;
这里是Home
页面,我想在布局中显示为子内容。
import React from 'react'
import Movies from './MoviesComponent'
const Home = () => {
return (
<>hello</>
)
}
export default Home
我想渲染布局里面的子组件。我尝试了一段时间遇到了麻烦,我可以在旧版本的react-router
中完成,但是在v6中,事情发生了很大的变化。我尝试做同样的事情,但是没有成功。
3条答案
按热度按时间xfyts7mz1#
据我所知,当嵌套了
Route
时使用Outlet
。https://reactrouter.com/en/main/components/outlet您的
Layout
不是这种情况。请尝试使用children
:1szpjjfi2#
请使用
布局组件内部
bmp9r5qi3#
问题
你至少有几个问题:
Layout
组件未呈现为Layout Route,因此呈现Outlet
没有实际意义,因为它未 Package 子Route
组件以将其内容呈现到插座中。Home
组件由Route
错误渲染。RRDv6Route
组件API从v5更改,不再有任何component
属性。所有渲染属性都被一个element
属性替换,该属性采用React.ReactNode
(又名JSX)属性值。溶液
将
Layout
渲染为布局管线,并正确渲染主管线。