javascript - React router 4 - 使用哈希来路由架构问题

标签 javascript reactjs react-router react-router-v4

我的设置

我在我的应用程序中使用react router 4,并试图实现向页面上的某些路由添加哈希的功能,这将保存页面的状态,以便用户可以链接到所述状态。

举个例子 - 我列出的产品有很多变体,当用户选择一个变体时,我会在 URL 中添加一个哈希 + 变体 ID,就像 myapp.com/cars/truck 转向 myapp.com/cars/truck#red,这允许用户链接到该特定变体,这正是我想要的。

我的问题

当用户导航到某个页面并选择几个变体,然后尝试向后导航时,就会出现我的问题。因为我更改了哈希值,所以每个后退步骤都会遇到浏览器历史记录中的前一个变体。 所以如果

  1. 用户登陆主页 myapp.com/
  2. 导航至 myapp.com/cars/truck
  3. 然后选择红色变体 => myapp.com/cars/truck#red,
  4. 然后是蓝色 myapp.com/cars/truck#red => myapp.com/cars/truck#blue

当他们按下浏览器上的后退按钮时,他们将返回到 myapp.com/cars/truck#red,当达到所需的效果时,他们会返回到上一页,忽略变体并哈希更改,将是 myapp.com/

我理解这是浏览器的行为,但我想知道是否有一种方法可以让用户直接链接到变体链接,并且可以在所描述的场景将用户带回上一页(在该场景中为 myapp.com/)。也许重新思考我是如何做到这一点的,我愿意接受任何建议。

如果有帮助的话,我正在使用react(16)和react router(v4)。如果需要,很乐意显示任何代码,请告诉我。感谢您的阅读!

最佳答案

尝试replaceState ,它将更新 URL,而不添加历史记录条目:

history.replaceState() operates exactly like history.pushState() except that replaceState() modifies the current history entry instead of creating a new one. Note that this doesn't prevent the creation of a new entry in the global browser history.

例如

history.replaceState(null, 'Red Truck', '/truck#red')

关于javascript - React router 4 - 使用哈希来路由架构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47140679/

相关文章:

javascript - json最后一个错误返回4

reactjs - "location.reload();"不工作

javascript - 为什么将函数参数传递给 React.useState 并且返回函数将返回过时的值

javascript - react-router-dom 给我 404

javascript - 从 Controller 获取数据到 AngularJs 组件

javascript - 如何使用javascript隐藏元素

reactjs - react 路由器没有达到重定向

javascript - 内存路由器类型错误 : Cannot read property 'pathname' of undefined

Javascript/ASP.net 在下拉列表更改后触发事件

javascript - 如何在渲染函数中返回多个组件?