【发布时间】:2020-03-12 17:48:18
【问题描述】:
假设我们有主页、页面 A、页面 B 和页面 C。如果我这样做:
- 打开页面 B
- 回家
- 转到页面 B
这会在历史对象中推送至少 3 条路由。如果我重复这些步骤,将有 6 个项目。当通过history.push 直接推送以及使用带有to 属性的链接组件时也是如此。
控制复杂性的唯一方法是检查以前的位置,然后执行history.goBack 或history.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