如何在react-router 4中的组件外部路由?

时间:2017-04-12 17:31:58

标签: react-router

在反应路由器3中,docs包括在组件外导航的方式。 React路由器4似乎已经放弃了对此的支持,导航外部组件的唯一方法是在组件上withRouter并将历史记录转发到您需要的任何位置。

我个人认为这是不切实际的,导致更纠缠和冗长的代码。我的问题是:我是否错过了如何在组件外导航的替代方法?

2 个答案:

答案 0 :(得分:2)

只需将应用程序包装在扩展的BrowserRouter中:

import { Router, Route, Switch, Redirect, BrowserRouter } from 'react-router-dom';
import { createBrowserHistory } from 'history';
export const history = createBrowserHistory();

export default class YourBrowserRouter extends BrowserRouter {
   render() {
    return (
        <Router history={history}>
           <Switch>
              <Route exact path="/login" component={Login} />
           </Switch>
        </Router >
    )
 }
}

还有import { history } ... history.push('/login'),您需要在React组件之外使用它。对我来说,如果服务器响应401,我想从提取实用程序方法中重定向到登录页面。

答案 1 :(得分:1)

如果你想要做的只是导航到一个新页面,推荐的方式是Redirect。如果您已经看过它,并且由于某种原因它不会工作,那么不,您不会错过任何内容,而且路由器是您从路线外获取历史记录的方式。