0

我在带有 React 16.12 和 React Router 4.3.1 的 SPA 中存在导航问题,该问题仅发生在 Firefox 浏览器中。

例如,从 URL /recommendedProducts 开始,我导航到 URL /forms。如果我通过在地址栏中按 enter 重新加载 /forms 页面,然后立即按浏览器后退按钮,则 URL 将更改为 /recommendedProducts 但它不会刷新。调查和比较 Firefox 和 Chrome 之间的行为我注意到在 Firefox 中没有触发 popstate 事件。

以下是路线:

<Switch>
    <Route path="/recommendedProducts" component={RecommendedProducts} />
...
    <Route path="/forms" component={Forms} />
</Switch>

如果不是以这种方式重新加载 /forms 页面,而是按 F5 一切正常,浏览器后退按钮将按预期工作。

为什么 Firefox 不触发 popstate 事件,如何通知 React Router 刷新页面?

编辑: 我刚刚发现了这个 React Router 问题,这正是问题所在: https ://github.com/ReactTraining/react-router/issues/837

4

1 回答 1

0

似乎问题与 Firefox 缓存有关。如https://github.com/ReactTraining/react-router/issues/837所示,定义卸载事件处理程序将禁用它。

这里是官方文档: https ://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching

以前我也尝试通过从那里刷新页面来使用 pageshow 和 pagehide 事件,但它们并不总是被触发。

于 2020-02-17T17:21:37.143 回答