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

IT技术 reactjs react-router browser-history
2021-04-23 01:10:36

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

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

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

有人可以向我解释一下吗?提前致谢 ;)

3个回答

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

我个人.replace在从无效 url(或不相关,即当登录用户转到“/login”url 时重定向到“个人资料”页面)重定向时使用,因此使用浏览器的“后退”按钮对最终用户正常工作。

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

我喜欢.replace()在我有一个明确的行动并且我不希望用户能够回到这个页面时使用。

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