React Router - BrowserHistory.Push VS. ContextTypes

时间:2016-10-26 01:23:41

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

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

使用browserHistory.push之间的区别是什么?与设置上下文类型相比,browserHistory.push作为程序重新路由似乎更容易。

谢谢!

1 个答案:

答案 0 :(得分:0)

不确定你使用了哪些教程,所以这在黑暗中是一个镜头。

我想你在第一篇教程中使用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)或内存历史记录,即渲染服务器端。

历史数据包附带了自己的API。在您的教程中browserHistory.push()可能直接调用历史数据包的API(see here)。

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

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