如何在 react-router 4 中的组件之外进行路由?

ben*_*ben 1 react-router

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

我个人认为这是不切实际的,并且会导致代码更加混乱和冗长。因此,我的问题是:我是否错过了如何导航外部组件的替代方法?

Asi*_*ora 5

只需将应用程序包装在扩展的 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 >
    )
 }
}
Run Code Online (Sandbox Code Playgroud)

并且import { history }......history.push('/login')在反应组件之外你需要它的地方。对我来说,如果服务器响应 401,我想从我的 fetch 实用程序方法中重定向到登录页面。

  • 似乎反应路由器没有道具“历史记录” (2认同)