【问题标题】:React Router - BrowserHistory.Push VS. ContextTypesReact 路由器 - BrowserHistory.Push VS。上下文类型
【发布时间】:2017-03-08 05:28:18
【问题描述】:

我正在完成一个高级 react/redux 教程,并在课程中遇到了讲师使用 browserHistory.push 链接到路由的部分,而不是之前用于创建名为 contextTypes 的静态类变量的方法并将其设置为类似于 React.PropTypes.blah blah blah。

这和使用 browserHistory.push 有什么区别? browserHistory.push 作为程序化重新路由似乎比设置上下文类型要容易得多。

谢谢!

【问题讨论】:

    标签: javascript node.js reactjs redux react-router


    【解决方案1】:

    不确定您使用了哪些教程,所以这有点摸不着头脑。

    我想您在第一个教程中使用了类似https://github.com/reactjs/react-router-redux 的东西,将路由器状态与您的 redux 状态同步,并将您的路由器对象放在上下文中。然后您可以执行以下操作:

    this.context.router.push(location) 发送位置更改 这会将位置更改保存到您的 redux 状态,然后加载该新路由。

    在核心 react-router-redux(以及许多其他路由库)使用 https://github.com/ReactTraining/history 来管理导航到的路由的历史记录。这允许您在现代浏览器中使用 HTML5 历史 API,回退到 hashHistory (index.html/#page-one) 或内存历史,即呈现服务器端。

    history 包带有它自己的 API。在您的教程中,browserHistory.push() 可能会直接调用历史包的 API (see here)。

    这将导致应用加载新路由,但可能会绕过同步到您的 redux 存储。

    您的第二个教程可能不使用 react-router-redux 或有不同的设置。

    【讨论】:

      猜你喜欢
      • 2021-07-09
      • 1970-01-01
      • 2020-07-27
      • 2017-04-09
      • 1970-01-01
      • 2017-07-17
      • 2018-12-30
      • 2020-04-17
      • 1970-01-01
      相关资源
      最近更新 更多