router.push()
追加一条新历史记录,追加后浏览器可以点后退
// 两种写法
router.push('/user')
router.push({ name: 'User', params: { id: 1 } })
行为
- 浏览器历史栈新增一条记录
- 点击浏览器返回按钮可以回到上一页
- 最常用:普通页面跳转(菜单、列表点击进入详情)
router.replace()
替换当前历史记录,不新增,所以浏览器 不可以点后退
router.replace('/login')
router.replace({ path: '/home' })
行为
- 不会新增历史记录,直接覆盖当前这条
- 返回按钮无法回到跳转前页面
- 适用场景:登录成功跳转、重定向、表单提交后跳转、防止回退重复操作
历史栈直观对比
假设当前栈:[A]
- push(B) → 栈:
[A, B]返回可回到A - replace(B) → 栈:
[B]无法返回A
适用场景
✅ push
- 列表 → 详情
- 菜单正常跳转
- 需要支持返回上一页
✅ replace
- 登录页 → 首页(防止回退又回到登录页)
- 404页面重定向
- 搜索页刷新筛选条件(不想保留旧搜索历史)
- 支付完成跳转结果页(禁止回退再次提交)
