在 Vue.js 中,特别是在使用 Vue Router 的时候,实现路由嵌套是一个常见的需求,主要用于构建多级页面结构。Vue Router 允许你嵌套路由映射,通过 <router-view>
组件来渲染对应的组件。
步骤 1: 定义嵌套路由
首先,在你的 Vue Router 配置中定义嵌套路由。这通常是在一个路由配置中设置 children
数组来实现的。每个子路由都应该是一个完整的路由配置对象,就像普通的路由配置一样。
const routes = [
{
path: '/parent',
component: ParentComponent,
children: [
{
// 当 /parent/child 被匹配时
// ChildComponent 将会被渲染在 ParentComponent 的 <router-view> 中
path: 'child',
component: ChildComponent
},
// 你还可以添加更多的子路由...
]
}
// 其他路由...
]
const router = new VueRouter({
routes // (缩写)相当于 routes: routes
})
步骤 2: 在父组件中使用 <router-view>
在你的父组件(在这个例子中是 ParentComponent
)的模板中,你需要添加一个 <router-view>
。这个 <router-view>
是用来渲染当前路由匹配到的子路由组件的。
<!-- ParentComponent.vue -->
<template>
<div>
<h1>这是父组件</h1>
<!-- 子路由组件将会渲染在这里 -->
<router-view></router-view>
</div>
</template>
<script>
export default {
// 组件选项...
}
</script>
步骤 3: 导航到嵌套路由
你可以像导航到任何其他路由一样导航到嵌套路由。例如,如果你想要导航到 ChildComponent
,你应该链接到 /parent/child
。
<!-- 在任何组件的模板中 -->
<router-link to="/parent/child">进入子组件</router-link>
或者,在 Vue 实例的代码中,你可以使用 this.$router.push('/parent/child')
来编程式地导航到嵌套路由。
注意事项
- 确保父路由(在这个例子中是
/parent
)有一个<router-view>
,这样它的子路由(/parent/child
)才能被渲染。 - 嵌套路由的路径是相对于其父路由的路径的。在这个例子中,
path: 'child'
是相对于/parent
的,因此完整的路径是/parent/child
。 - 你可以根据需要嵌套任意层级的路由。只需在每个父路由组件的模板中添加
<router-view>
,并在路由配置中继续添加children
数组即可。