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

What is the trade off between history push and replace?

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

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

我是不是忽略了重点?为我的目的选择一个或另一个之间是否存在权衡?

谁能给我解释一下?提前致谢 ;)

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

我个人使用 .replace 从无效 url 重定向(或不相关,即当登录用户转到“/login”时重定向到 "profile" 页面 url),所以使用浏览器的 "back" 按钮对最终用户来说是正确的。

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

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

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