反应路由器POP

时间:2019-11-27 03:12:44

标签: reactjs react-router router

我正在研究我的React应用程序的路由器操作历史记录,发现在执行“ REPLACE”操作之后紧接有许多“ POP”操作。我似乎找不到更多有关“ POP”操作的文档,这是什么?它是做什么的?

在我的组件中添加验证以验证我的location.action生命周期中的componentDidUpdate()是安全还是正确的?

enter image description here

2 个答案:

答案 0 :(得分:0)

POP是浏览器后退事件操作。以及为什么要验证location.action

答案 1 :(得分:0)

发现this articleMatthew所写,很好地解释了History API:

返回上一页

使用pushState()方法时,还需要考虑其自然对应的onPopState事件。尽管pushState()方法将新条目添加到浏览器的历史记录列表中,但是onPopState事件使您有机会在用户返回时对其进行处理。

要了解其工作原理,请考虑如果访问者浏览词典推断示例中的所有幻灯片会发生什么。加载每张新幻灯片时,页面都会添加一个历史记录条目。但是,如果用户使用“后退”按钮后退,则什么也不会发生。

要解决此缺陷,您需要处理onPopState事件,该事件在每次历史记录导航之后触发。 (这包括您使用诸如history.back()之类的历史记录方法之一,以及用户单击浏览器导航按钮时的情况。)

onPopState事件为您的代码提供了您之前在pushState()中存储的状态信息。

...

如果按下,则必须弹出pushState()方法和onPopState事件是合作伙伴。你投入的是一种,而另一种则得到了回报。