Vue Router 的编程式导航主要提供了以下方法:
- push:这个方法会向 history 栈添加一个新的记录,所以当用户点击浏览器后退按钮时,则回到之前的 URL。当你点击
<router-link>
时,这个方法会在内部被调用,所以说,点击<router-link :to="...">
等同于调用router.push(...)
。
示例:
router.push('home') // 或者带查询参数,变成 /register?plan=private router.push({ path: 'register', query: { plan: 'private' }}) // 命名的路由 router.push({ name: 'user', params: { userId: 123 }}) // 带查询参数,变成 /user/123?friend=yes router.push({ path: `user/${userId}`, query: { friend: 'yes' }})
- replace:这个方法不会向 history 添加新记录,而是替换掉当前的 history 记录。
示例:
router.replace('home') // 或者带查询参数,变成 /register?plan=private router.replace({ path: 'register', query: { plan: 'private' }}) // 命名的路由 router.replace({ name: 'user', params: { userId: 123 }}) // 带查询参数,变成 /user/123?friend=yes router.replace({ path: `user/${userId}`, query: { friend: 'yes' }})
- go:这个方法模拟点击浏览器的后退/前进按钮。在浏览器历史中前进和后退多少步。
示例:
// 在浏览器记录中前进一步,等同于 history.forward() router.go(1) // 后退一步记录,等同于 history.back() router.go(-1) // 前进 3 步记录 router.go(3) // 如果 history 记录不够用,那就默默地失败呗 router.go(-100) router.go(100)
这些方法提供了对路由的完全控制,使得你可以根据应用程序的状态来更改 URL,而无需用户进行任何操作。它们特别适用于在用户与应用程序交互时动态更改 URL 的场景。