历史推送和替换之间的权衡是啥?

Posted

技术标签:

【中文标题】历史推送和替换之间的权衡是啥?【英文标题】:What is the trade off between history push and replace?历史推送和替换之间的权衡是什么? 【发布时间】:2017-01-13 09:15:59 【问题描述】:

我使用 History 包将无效 URL 重定向到我的 react 组件上的 404 页面。

我使用.replace 而不是.push 只是因为我不希望浏览器记录我访问过的任何无效网址。

我错过了这里的重点吗?为我的目的选择一个或另一个之间是否有权衡?

谁能给我解释一下?在此先感谢;)

【问题讨论】:

【参考方案1】:

我认为你的想法是正确的。

我个人使用.replace 从无效网址重定向(或不相关,即当登录用户转到“/登录”网址时重定向到“个人资料”页面),因此使用浏览器的“返回”按钮有效适合最终用户。

【讨论】:

【参考方案2】:

router.replace 的作用类似于 router.push,唯一的区别是它在导航时不推送新的历史条目,顾名思义 - 它替换当前条目。

【讨论】:

【参考方案3】:

当我有明确的操作并且我不希望用户能够返回此页面时,我喜欢使用.replace()

示例:我有一个带有删除按钮的产品详细信息页面,用于最终删除产品。当我单击按钮时,我会 router.replace 返回所有产品列表,因此当用户在浏览器中使用后退按钮时,他无法返回详细信息页面,因此他无法看到甚至再次单击删除按钮因为这个产品已经不存在了。

【讨论】:

以上是关于历史推送和替换之间的权衡是啥?的主要内容,如果未能解决你的问题,请参考以下文章

浏览复杂版本控制系统历史的最先进的用户界面是啥?

使用对象 ID 与将对象填充到其他类之间的权衡是啥? [关闭]

离子使用历史推送,没有过渡

React Router 浏览器历史推送和锚点

替换远程 git repo (Heroku)

从 Parse 中删除推送通知历史记录条目