<script setup lang="ts">
const router = useRouter()
</script>
如果只需要在模板中使用路由器实例,请使用 $router
<template>
<button @click="$router.back()">
Back
</button>
</template>
如果您的项目包含 app/pages/ 目录,则 useRouter 的行为与 vue-router 提供的行为一致。
addRoute():向路由器实例添加新路由。parentName 可以用于将新路由作为现有路由的子路由。removeRoute():通过路由名称移除现有路由。getRoutes():获取所有路由记录的完整列表。hasRoute():检查是否存在指定名称的路由。resolve():返回路由位置的标准化版本。还包括一个 href 属性,其中包含任何现有基础路径。const router = useRouter()
router.addRoute({ name: 'home', path: '/home', component: Home })
router.removeRoute('home')
router.getRoutes()
router.hasRoute('home')
router.resolve({ name: 'home' })
router.addRoute() 将路由详细信息添加到路由数组中,这在构建 Nuxt 插件时非常有用,而 router.push() 则会立即触发新的导航,这在页面、Vue 组件和可组合函数中非常有用。back():如果可能,返回历史记录中的上一页,与 router.go(-1) 相同。forward():如果可能,前进历史记录中的下一页,与 router.go(1) 相同。go():在历史记录中向前或向后移动,不受 router.back() 和 router.forward() 中强制执行的层级限制。push():通过在历史堆栈中推入一个条目,以编程方式导航到新的 URL。建议改用 navigateTo。replace():通过替换路由历史堆栈中的当前条目,以编程方式导航到新的 URL。建议改用 navigateTo。const router = useRouter()
router.back()
router.forward()
router.go(3)
router.push({ path: '/home' })
router.replace({ hash: '#bio' })
useRouter 可组合函数提供了 afterEach、beforeEach 和 beforeResolve 辅助方法,它们充当导航守卫。
然而,Nuxt 具有路由中间件的概念,它简化了导航守卫的实现,并提供了更好的开发者体验。
如果您没有 app/pages/ 文件夹,那么 useRouter 将返回一个通用路由器实例,它具有类似的辅助方法,但请注意,并非所有功能都可能支持或行为与 vue-router 完全相同。