reactjs - React Router v5 嵌套路由在单独的组件中
问题描述
我正在尝试将我的身份验证路由与应用内容路由分开:
应用程序.jsx:
<BrowserRouter history={history}>
<Switch>
<Route exact path={`${process.env.REACT_APP_ROUTE_PREFIX}`} component={PrivateRouteWrapper} />
<Route exact path={`${process.env.REACT_APP_ROUTE_PREFIX}/login`} component={LoginPage} />
<Route exact path={`${process.env.REACT_APP_ROUTE_PREFIX}/signup`} component={SignupPage} />
</Switch>
</BrowserRouter>
PrivateRouteWrapper.jsx:
<React.Fragment>
<PrivateRoute exact path={process.env.REACT_APP_ROUTE_PREFIX}
component={Page1}
titleText={"Quest"}
titleVisibility={true} />
<PrivateRoute exact path={`${process.env.REACT_APP_ROUTE_PREFIX}/page2`}
component={Page2} />
<MyComponentSharedBetweenPages />
</React.Fragment>
PrivateRoute.jsx:
const PrivateRoute = ({ component: Component, ...rest }) => (
<Route
{...rest}
render={props => loggedIn
? <Component {...props} />
: <Redirect to={{ pathname: `${process.env.REACT_APP_ROUTE_PREFIX}/login` }} />}
/>
);
登录、注册和 page1 路由之间的路由工作正常。但是当我尝试转到第 2 页时,页面变为空白。
我做错了什么?
解决方案
我想通了:我从 Route 中删除了确切的属性,并将其移动到 App.jsx 中列表的末尾:
<BrowserRouter history={history}>
<Switch>
<Route exact path={`${process.env.REACT_APP_ROUTE_PREFIX}/login`} component={LoginPage} />
<Route exact path={`${process.env.REACT_APP_ROUTE_PREFIX}/signup`} component={SignupPage} />
<Route path={`${process.env.REACT_APP_ROUTE_PREFIX}`} component={PrivateRouteWrapper} />
</Switch>
</BrowserRouter>
推荐阅读
- node.js - 在嵌套函数中捕获承诺拒绝
- anylogic - 运行时和模型时间在 Anylogic 中不同步
- aws-lambda - 即使数据及时响应,ReadTimeoutException
- r - 如何使用 write_sav 编写唯一的变量名
- libreoffice - 如何在主文档 libreoffice writer 中的文件文档之间添加分页符?
- java - 如何在 Java 中将元素插入到循环单链表中?
- c# - ASP.NET Core - 添加控制器 - 带有操作的 API 控制器,使用实体框架 - 引发错误并降级 NuGet EntityFrameworkCore.SqlServer
- javascript - 列表中的每个孩子都应该有一个唯一的“关键”道具——但我有一个?
- dbus - dbus-monitor 中的'sender=:1.478' 是什么意思?
- postgresql - 根据 cube.js 中的分层用户 ID 动态过滤数据