我正在构建一个react应用程序,但我无法使路由工作。
我需要一些验证途径一个共同的布局(页眉,页脚)( ,
/login
,sign-up
,forgot-password
等...)我需要需要另一种常见的布局应用程序的保护部分的剩余部分(
Home
,Dashboard
,等...)我需要另一个没有任何布局的 404 页面。
我从这些链接中尝试了几种技术:
- 使用 React Router v4 的多个布局
- https://simonsmith.io/reusing-layouts-in-react-router-4
- 带有react-router v4 / v5 的嵌套路由
- https://reacttraining.com/react-router/web/example/route-config
但可以达到工作版本。
这是我目前拥有的:
(注意:现在我忽略了阻止非登录用户进入 AppLayout 的私有路由的需要,我会在之后处理这个问题)
const App: React.FC = () => {
const history = createBrowserHistory();
return (
<div className="App">
<Router history={history}>
<Switch>
<AppLayout>
<Route path="/home" component={HomePage}/>
<Route path="/dashboard" component={DashboardPage}/>
...
</AppLayout>
<AuthLayout>
<Route path="/login" component={LoginPage}/>
<Route path="/sign-up" component={SignUpPage}/>
...
</AuthLayout>
<Route path="*" component={NotFoundPage} />
</Switch>
</Router>
</div>
);
};
export default App;
既AuthLayout
与AppLayout
简单,类似于(只是对于每个不同的页眉/页脚):
class AppLayout extends Component {
render() {
return (
<div className="AppLayout">
<header>...</header>
{this.props.children}
<footer>...</footer>
</div>
);
}
}
export default AppLayout;
问题是只呈现来自 AppLayout 的路由。其他路由只显示 AppLayoutheader
而footer
没有任何内容。
这些是我正在使用的react版本:
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-router-dom": "^5.0.0",
任何帮助,将不胜感激。
提前致谢。