【发布时间】:2018-05-14 23:54:33
【问题描述】:
我一直在自学react-router,现在我想知道应该使用哪种方法转到另一个页面。
根据this post (Programmatically navigate using react router),您可以通过this.props.history.push('/some/path')转到另一个页面。
不过,老实说,我不太确定 window.location.href 和 history.pushState 之间的区别。
据我了解,window.location.href = "/blah/blah"; 通过新的 HTTP 调用将您引导至另一个页面,该调用会刷新浏览器。
另一方面,history.pushState(和this.props.history.push('/some/path'))所做的是推送一个状态。显然,这会更改 HTTP 引荐来源网址并因此更新 XMLHttpRequest。
这是mozila's documentation...的摘录
使用 history.pushState() 可以更改在您更改状态后创建的 XMLHttpRequest 对象的 HTTP 标头中使用的引荐来源网址。
在我看来,这两种方法都进行了新的 HTTP 调用。如果有,有什么区别?
我们将不胜感激。
附言
我认为开发人员在决定如何转到另一个页面之前,需要考虑是否有必要从服务器获取数据。
如果您需要从服务器检索数据,window.location.href 将
没关系,因为您将进行新的 HTTP 调用。但是,如果您使用的是<HashRouter>,或者您想避免为了速度而刷新页面,那么有什么好的方法呢?
这个问题让我发了这篇文章。
【问题讨论】:
标签: javascript window react-router browser-history