【问题标题】:Is it fine to push to React Router history indefinitely?无限期地推送到 React Router 历史记录可以吗?
【发布时间】:2020-03-12 17:48:18
【问题描述】:

假设我们有主页、页面 A、页面 B 和页面 C。如果我这样做:

  1. 打开页面 B
  2. 回家
  3. 转到页面 B

这会在历史对象中推送至少 3 条路由。如果我重复这些步骤,将有 6 个项目。当通过history.push 直接推送以及使用带有to 属性的链接组件时也是如此。

控制复杂性的唯一方法是检查以前的位置,然后执行history.goBackhistory.push:Check history previous location before goBack()

问题是管理history 对象很快就会变成一项非常复杂的任务。只需添加一个在应用程序的每个页面上呈现的导航栏,您就可以添加至少“n-1”个可以回家的地方(假设主页是导航选项卡之一)。

我们应该关心这个并处理以前的位置吗?


可能相关的问题:Why does the React Router history length increase on refresh?

环境:

  • 历史是 BrowserHistory
  • react-router@5.1.2
  • react-router-dom@5.1.2

【问题讨论】:

  • 对我来说似乎很重要,我不完全确定问题是什么。
  • 我更新了帖子并在最后改写了问题
  • 我不确定我是否理解这个问题。 history 对象用于保存用户之前访问过的页面列表。如果用户多次访问同一个页面,为什么该页面不能多次出现在列表中?
  • @ElanHamburger 嗯好吧,出于某种原因,我认为它应该在那里保存最少数量的页面。也就是说,如果我有一个有 4 个页面的应用程序,那么历史记录中应该始终最多有 4 个项目,并使用 history.goBack 向后导航。
  • @PaulRazvanBerg 我相信history 应该模仿浏览器历史。如果你去页面A,点击页面B的链接,点击页面A的链接,然后点击两次后退按钮,你应该会再次到达页面A。

标签: reactjs react-router react-router-dom


【解决方案1】:

感谢 Elan Hamburger 的 cmets,我现在明白 BrowserHistory 的行为是这样的。正常情况下,在浏览器中,如果你去A页,然后到B页,然后回到A页,点击3次返回就会回到首页。

因此,您不应该真正介意history 对象的大小,至少在您没有数十亿用户的情况下肯定不会。

【讨论】:

    猜你喜欢
    • 2020-10-16
    • 2017-07-30
    • 2022-07-18
    • 2017-12-14
    • 2019-08-03
    相关资源
    最近更新 更多