router.push 和 router.replace 是前端路由库(如 Vue Router 或 React Router)中用于导航的两个核心方法,它们的核心区别在于对浏览器历史记录的影响。以下是详细对比:
1. router.push
- 作用:向浏览器历史记录栈中添加一条新记录,导航到新页面。
- 行为:用户可以通过浏览器的“后退”按钮返回到之前的页面。
- 使用场景:适用于大多数导航场景(例如点击链接跳转、菜单切换页面等),需要保留当前页面的历史记录。
- 示例:
javascript
复制
// Vue Router router.push('/home'); // React Router history.push('/home');
2. router.replace
- 作用:替换当前历史记录,而不是添加新记录。
- 行为:用户无法通过“后退”按钮返回到被替换前的页面,而是会回到更早的历史记录。
- 使用场景:适用于不希望用户返回当前页面的场景(例如登录后跳转到首页,或表单提交后跳转结果页)。
- 示例:
javascript
复制
// Vue Router router.replace('/home'); // React Router history.replace('/home');
直观对比
假设当前历史记录栈为:[PageA]
-
router.push('/PageB') → 历史记录变为[PageA, PageB]- 用户点击后退 → 回到
PageA。
- 用户点击后退 → 回到
-
router.replace('/PageB') → 历史记录变为[PageB]- 用户点击后退 → 回到
PageA的上一页(比如浏览器初始页)。
- 用户点击后退 → 回到
148

被折叠的 条评论
为什么被折叠?



