javascript - 重定向 react 路由器中的所有路由

标签 javascript reactjs react-router

我有一个 React/Redux 应用程序,如果用户没有完成注册过程,如果他们再次登录,我希望他们被重定向到他们所在步骤的注册路径,无论他们尝试去哪条路径到。对我来说最好的方法是什么,而不必为我的每条路线创建一个自定义路线,其中包含该逻辑?这是我的基本路由器:

render() {
  return (
   <Router history={history}>
     <Switch>
       <HomeRoute exact path="/" publicComp={Start} privateComp={Rooms}/>
       <Route path="/login" component={Login}/>
       <Route path="/signup" component={SignUpMain}/>
    </Switch>
   </Router>
  );
}

理想情况下,我可以说“如果注册未完成,则在所有这些路由上重定向到/signup”。有办法做到这一点吗?

最佳答案

一种方法是用重定向到注册的高阶组件替换您的路由组件。

const RedirectRoute = ({ component: Component, ...rest }) => (
  <Route
    {...rest}
    render={props =>
        <Redirect
          to="/signup"
        />
    }
  />
);

如果您将高阶组件添加到文件的底部,然后您可以像这样替换 Route 组件......

render() {
  return (
   <Router history={history}>
     <Switch>
       <RedirectRoute exact path="/" render={() => <HomeRoute exact path="/" publicComp={Start} privateComp={Rooms}/>}/>
       <RedirectRoute path="/login" component={Login}/>
       <Route path="/signup" component={SignUpMain}/>
    </Switch>
   </Router>
  );
 }

如果您想将高阶组件保存在单独的文件中,那么只需像导入任何其他组件一样导入它。

关于javascript - 重定向 react 路由器中的所有路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49123651/

相关文章:

reactjs - 在浏览器上点击“刷新”后,React Router v4 登录检查

javascript - 在单独的路由中使用 useRef 响应滚动导航

javascript - 如何在不使用长度函数的情况下创建测量字符串长度的长度函数

javascript - 有没有办法计算有多少人访问了我的网站?

reactjs - React router v4 历史记录,有没有办法获取您导航的网址?

javascript - 类型错误 : Cannot read property 'subscribe' of undefined PersistGate. 组件DidMount

javascript - React Router v4 <NavLink> 与 <Link> 的优点

javascript - 在同一页面加载ReactJS组件覆盖其他组件

javascript - angular 是否具有 vue.js 中的 "computed property"功能?

javascript - 即使调整窗口大小时如何确保元素正确对齐?