在反应路由器3中,docs包括在组件外导航的方式。 React路由器4似乎已经放弃了对此的支持,导航外部组件的唯一方法是在组件上withRouter
并将历史记录转发到您需要的任何位置。
我个人认为这是不切实际的,导致更纠缠和冗长的代码。我的问题是:我是否错过了如何在组件外导航的替代方法?
答案 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。如果您已经看过它,并且由于某种原因它不会工作,那么不,您不会错过任何内容,而且路由器是您从路线外获取历史记录的方式。