Reactjs 反应路由器&x27;s BrowserRouter与浏览器不同步';使用带有散列(#)的链接时的URL

Reactjs 反应路由器&x27;s BrowserRouter与浏览器不同步';使用带有散列(#)的链接时的URL,reactjs,react-router,react-router-dom,Reactjs,React Router,React Router Dom,我的应用程序使用react router 5.1.0,我们使用的路由器是BrowserRouter。 我最近添加了一个指向其中一个页面的链接,该链接会将用户带到站点中的另一个页面,并根据散列提供的元素id向下滚动到该元素。我使用“反应路由器哈希链接”来实现这一点 假设用户在包含的页面/start/page上启动。当点击该链接时,用户被带到/some/page,页面确实向下滚动到id为some element id的元素。这一切都很好 但当您使用浏览器的“后退”按钮时,它会从URL中删除#某些元素

我的应用程序使用react router 5.1.0,我们使用的路由器是BrowserRouter。 我最近添加了一个指向其中一个页面的链接,该链接会将用户带到站点中的另一个页面,并根据散列提供的元素id向下滚动到该元素。我使用“反应路由器哈希链接”来实现这一点

假设用户在包含
的页面
/start/page
上启动。当点击该链接时,用户被带到
/some/page
,页面确实向下滚动到id为
some element id
的元素。这一切都很好

但当您使用浏览器的“后退”按钮时,它会从URL中删除
#某些元素id
,并且不会更改路径,但BrowserRouter会将用户带回
/start/page
,并加载正确的组件。因此,现在URL显示
/some/page
,但如果检查BrowserRouter的位置对象,它的路径名为
/starting/page
。在这一点上,历史似乎是一团糟

这实际上发生在react路由器hash link的
HashLink
以及react路由器dom附带的
link
组件上。我试过Chrome和MS Edge