有没有办法在 react-router-redux@5.0.0 中定义默认路由(如果没有匹配)

Posted

技术标签:

【中文标题】有没有办法在 react-router-redux@5.0.0 中定义默认路由(如果没有匹配)【英文标题】:Is there a way to define default route (if no one match) in react-router-redux@5.0.0 【发布时间】:2018-09-16 08:50:55 【问题描述】:

我正在使用 react-router-redux@5.0.0

我有这个

<Route path='/login' component= Login  />
<Route exact path='/' component= Home  />

有没有办法像 react-router-redux@4.x.x 那样定义默认路由?

如果有其他匹配,这条“默认路由”也必须不通过。

因为如果我会添加

<Route path='/login' component= Login  />
<Route exact path='/' component= Home  />
<Route component= Default  />

将为所有路由呈现默认组件,包括'/login'和'/'

【问题讨论】:

是的。如果不设置路径,它会起作用。 【参考方案1】:

我正在寻找相同问题的答案,但要寻找 react-router-dom 包。解决方案是这样的:

<Switch>
  <Route path='/login' component= Login  />
  <Route exact path='/' component= Home  />
  <Route component= Default  />
</Switch>

这样,第一个匹配的 Route 将被显示,而其余的将被忽略。

您可以像这样将SwitchRoute 一起导入:

import  BrowserRouter, Switch, Route  from 'react-router-dom';

【讨论】:

【参考方案2】:

在定义所有其他路线后放置以下全能路线(可选地如下所述保留路径):

<Route path="*" component=DefaultRoute />

这是一个包含更多详细信息的答案的链接:React-Router: No Not Found Route?

【讨论】:

catch all route 将与匹配的路由一起显示【参考方案3】:

使用最新的 react-router 版本,

&lt;Route path='' Componenet=Default&gt;

应该改为,

&lt;Route path='' element=&lt;Default&gt;&gt;

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于有没有办法在 react-router-redux@5.0.0 中定义默认路由(如果没有匹配)的主要内容,如果未能解决你的问题,请参考以下文章

在 react + redux + react-router-redux 中导航到用户登录成功的主页

无法读取未定义的属性“类型”(react-router-redux)

react-router-redux 5:维护导航中的商店状态历史记录

react-router-redux 打破了我的应用程序状态

Redux 使用 react-router-redux 连接“块”导航

从 react-router-redux 获取当前位置