【问题标题】:How to route outside of components in react-router 4?如何在 react-router 4 中的组件之外路由?
【发布时间】:2017-09-08 14:52:09
【问题描述】:

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

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

【问题讨论】:

    标签: react-router


    【解决方案1】:

    只需将应用程序包装在扩展的 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 响应,我想从我的 fetch 实用程序方法中重定向到登录页面。

    【讨论】:

    • 似乎 react-router 没有 prop history
    【解决方案2】:

    如果您只想导航到新页面,推荐使用Redirect。如果您已经看到它并且由于某种原因它不起作用,那么不,您没有错过任何东西,withRouter 是您从路由外部访问历史记录的方式。

    【讨论】:

      猜你喜欢
      • 2019-01-07
      • 1970-01-01
      • 2018-05-26
      • 2018-05-12
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      相关资源
      最近更新 更多