我一直在自学react-router
,现在我想知道应该使用哪种方法去到另一个页面。
根据这篇文章(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
。
以下是摘自Mozilla文档的一段摘录...
使用 history.pushState() 会更改在改变状态后创建的 XMLHttpRequest 对象的 HTTP 标头中使用的引用者。
对我来说,两种方法都似乎会发起新的HTTP请求。如果是这样,它们之间有什么区别呢?
任何建议都将不胜感激。
PS
我认为开发人员需要考虑是否需要从服务器获取数据,然后再决定如何转到另一个页面。
如果需要从服务器检索数据,window.location.href
可以使用,因为您会发起新的 HTTP 请求。但是,如果您正在使用 <HashRouter>
,或者为了速度而避免刷新页面,则采用什么方法比较好呢?
这个问题引导我写了这篇文章。
history.push
时,状态被维护。然而,当使用window.location.href
时,状态返回到初始状态。 - Luciana Campello