编程式导航与 useRouter
router.push()、router.replace()、router.go()、useRouter() 和 useRoute() 组合式函数
编程式导航与 useRouter 是 CoddyKit 上的免费 Vue Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Vue Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Vue Academy 课程共包含 4 节课。
从代码中导航
除了 RouterLink,您经常还需要从 JavaScript 中导航,例如提交表单或登录之后。useRouter 可组合函数会提供路由器实例,让您完成这项操作。
获取路由器
在 <script setup> 内调用 useRouter()。返回的对象会提供 push、replace、go 等功能。
import { useRouter } from 'vue-router'
const router = useRouter()使用 push 导航
router.push 会向历史记录栈添加一条记录,就像点击链接一样。最简单的形式接收一个路径字符串。
router.push('/dashboard')使用路由对象执行 push
您也可以传入一个包含 name、params 和 query 的对象。使用命名路由可以避免将路径硬编码。
router.push({
name: 'user',
params: { id: 42 },
query: { tab: 'profile' }
})使用 replace:不添加历史记录
router.replace 会在不添加历史记录的情况下导航,因此后退按钮会跳过该页面。登录后请使用它,这样用户就无法返回登录页面。
router.replace('/dashboard')前进和后退
router.go(n) 会按 n 步在历史记录中移动。router.go(-1) 后退一页;router.go(1) 前进一页。
function goBack() {
router.go(-1)
}异步操作之后
典型流程是:提交表单,等待结果,然后导航。push 会返回一个 Promise,您可以等待它完成。
async function login() {
await auth.signIn(form)
router.push('/dashboard')
}读取当前路由
要读取当前路由的参数和查询字符串,请使用 useRoute 可组合函数。不要将它与 useRouter 混淆——useRoute 表示路由,useRouter 表示导航器。
import { useRoute } from 'vue-router'
const route = useRoute()访问参数
通过 route.params 读取动态片段。对于 /user/:id 路由,id 位于 route.params.id 中。
const userId = route.params.id访问查询字符串
通过 route.query 读取查询字符串。对于 ?tab=profile,请使用 route.query.tab。
const tab = route.query.tab响应参数变化
由于 route 具有响应性,您可以监听它,以便在停留在同一组件中时响应参数变化。
import { watch } from 'vue'
watch(() => route.params.id, (newId) => {
loadUser(newId)
})快速检查
请测试您对编程式导航的了解。
回顾
您已经学会编程式导航:
- useRouter() 提供 push、replace 和 go。
- push 会添加历史记录;replace 不会;go(-1) 会后退。
- push 接收路径字符串或 { name, params, query } 对象。
- useRoute() 读取当前参数和查询字符串,并且具有响应性。
常见问题解答
「编程式导航与 useRouter」课时是免费的吗?
是的 — 「编程式导航与 useRouter」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Vue Academy 课程的其余内容,请升级到 CoddyKit PRO。 Vue Academy 课程共包含 4 节课。
「编程式导航与 useRouter」这节课中我会学到什么?
router.push()、router.replace()、router.go()、useRouter() 和 useRoute() 组合式函数 你通过在浏览器中直接运行的动手代码来练习 Vue Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Vue Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Vue Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「编程式导航与 useRouter」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Vue Academy 课中编写并运行代码吗?
能。每节 Vue Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 路由元字段与类型声明
- 路由过渡与动画
- 滚动行为配置
- 编程式导航与 useRouter