reactjs - 如何在反应路由器 v4 中处理未找到的嵌套路由页面?
问题描述
我的应用程序中有 2 个不同的部分,第一部分是站点,另一个是管理面板,在这种情况下,我使用 react router dom 嵌套路由,但我无法处理用于面板的 url 的未找到页面;例如,我希望 /dashboard/something 被重定向到我的路由在下面的未找到页面:
<Switch>
{/* portal */}
<Route exact path='/' component={Portal} />
<Route path="/landing" component={Portal} />
<Route path="/login" component={Portal} />
<Route path="/callback" component={Callback} />
<Route path="/activation" component={Portal} />
<Route path="/confirmation" component={Portal} />
<Route path="/opportunities/:id" component={Portal} />
<Route path='/panel' component={Portal} />
<Route path='/electiondetails/:id' component={Portal} />
<Route path='/errors' component={Portal} />
{/* election panel */}
<Route path='/electionpanel' component={Portal} />
{/* dashboard */}
<Route path='/dashboard' component={Index} />
<Route path='/dashboard/login' component={Index} />
<Route path='/dashboard/cartable/requests' component={Index} />
<Route path='/dashboard/elections-management' component={Index} />
{/* not found */}
<Route path="/404" component={Portal} />
<Redirect from="/**/" to="/404"></Redirect>
</Switch>
解决方案
/dashboard/something
始终与以下路线匹配:
<Route path='/dashboard' component={Index} />
因此,您将看到该Index
组件。如果您需要通过此路线并显示 404 页面,则应将其标记为exact
:
<Route exact path='/dashboard' component={Index} />
此外,您不需要重定向到该 404 页面,只需放置一个Route
without path
:
代替
<Route path="/404" component={Portal} />
<Redirect from="/**/" to="/404"></Redirect>
和
<Route component={Portal} />
推荐阅读
- c - 自定义 NSS 模块 - 成功编译但未调用且未生成任何日志
- spring - 无法从 Postgres 下载原始格式的文件
- sql - 如何在oracle中一次更改所有列?
- apache-nifi - 为 miNifi 开放的端口
- php - Laravel 完整性约束违规:1052 列“id”在 where 子句中不明确
- android - 如何在android studio的卡片中显示手机中的图片(如whatsapp)?
- typescript - 类型检查在泛型类中不起作用,但在其派生类中起作用
- reactjs - 如何使特定标签在我的代码中随处可见?
- google-maps - 谷歌地图和可访问性
- c - 对虚拟地址空间和位置无关代码 (PIC) 的困惑