react-router - 处理嵌套页面之间的路由
问题描述
<Switch>
<Route exact path={`${path}/dashboard`} component={Dashboard} />
<Route exact path={`${path}/submissions`} component={SubmissionSelect} />
<Route exact path={`${path}/submissions/:id`} component={SubmissionPage} />
</Switch>
它是如何从应用程序工作的(假设根 url 是localhost:3000
):
- 单击指向
Dashboard
组件的链接,导致我被路由到localhost:3000/dashboard
- 在
Dashboard
组件中,我单击另一个链接,将我带到该SubmissionPage
组件(例如localhost:3000/submissions/9
) - 但是,当我尝试导航回
Dashboard
组件(或任何其他组件)时,URL
现在变成localhost:3000/submissions/dashboard
- 如上所示,这个词
submissions
被错误地附加到路径的末尾,现在整个路由都被破坏了。
我试图参考react-router-dom
下面提供的嵌套教程,但它的用例略有不同。
https://reactrouter.com/web/example/nesting
我的路由有问题吗?
提前致谢!
解决方案
您需要启动/
相对于应用程序根目录的路由。试试这个,也改变你的Link component to use new addresses
:
<Switch>
<Route exact path={`/dashboard`} component={Dashboard} />
<Route exact path={`/submissions`} component={SubmissionSelect} />
<Route exact path={`/submissions/:id`} component={SubmissionPage} />
</Switch>;
推荐阅读
- facebook - facebook页面被标记的帖子
- excel - Excel Vlookup lookup_value 用法
- javascript - 从头开始创建 Jquery UI Slider
- mysql - 查询选择连接表中的选择和where if条件
- visual-studio - Visual Studio 更新 15.8.1+ 构建问题
- javascript - 如何在 Highcharts 中重置图例区域中的项目?
- node.js - MongoDB 多语言 - 切换案例
- angular - 为什么 Angular 4 FormGroup 自定义验证器不起作用?
- dart - 切换语言时的国际化问题
- c# - 将 Powershell Connect-PnPOnline 转换为 C#