没有路由匹配时如何重定向?

时间:2018-08-14 03:15:35

标签: reactjs react-router-v4

我想做这样的事情,如果没有路由匹配,我会立即重定向到'/'。使用下面的代码,当我找到不存在的路径时,会得到Nothing was returned from render

    <Switch>
      <Route exact path="/" component={UnAuth} />
      <PrivateRoute exact path="/:contentId" component={Content} />
      <Redirect to="/" />
   // <Redirect from='*' to='/' /> doesn't work as well
    </Switch>

1 个答案:

答案 0 :(得分:0)

如果您想要“捕获所有路线”,该路线将重定向到任意位置(“ /”)

所以您将首先创建一条“全部捕获”路线

<Switch>
  <Route exact path="/" component={UnAuth} />
  <PrivateRoute exact path="/:contentId" component={Content} />
  //...all of your routes here

  // this route will catch any route that wasnt matched in previous routes
  <Route component={RedirectToMain}/> 

</Switch>

以及将获取所有路由并重定向的组件: 如果您需要更多逻辑,它只会重定向到/,您可以创建一个可以处理其他任何事情的类。

const RedirectToMain = _ => {
    return (
        <Redirect to="/" />
    );
}