在 Vue 应用中,<router-view>
是一个非常重要的内置组件,它作为路由出口,用于渲染匹配到的路由组件。当你使用 Vue Router 定义了路由之后,你可以在应用的模板中放置 <router-view>
组件,它会根据当前的路由渲染相应的组件。
以下是 <router-view>
的一些基本用法:
- 基本使用:
在 Vue 应用的模板中,你可以放置一个或多个
<router-view>
组件。每个<router-view>
都可以渲染一个路由匹配到的组件。
<!-- App.vue -->
<template>
<div id="app">
<router-link to="/home">Home</router-link>
<router-link to="/about">About</router-link>
<router-view></router-view>
</div>
</template>
- 嵌套路由:
如果你有嵌套路由,可以在父组件中使用
<router-view>
,然后在子路由对应的组件中也可以使用<router-view>
来渲染更深层级的组件。
// router/index.js
const routes = [
{
path: '/parent',
component: ParentComponent,
children: [
{
path: 'child',
component: ChildComponent
}
]
}
];
<!-- ParentComponent.vue -->
<template>
<div>
<h1>Parent Component</h1>
<router-view></router-view> <!-- 渲染子路由 -->
</div>
</template>
- 命名视图:
如果你的应用有多个不同的视图需要同时显示,你可以使用命名的
<router-view>
来实现。
// router/index.js
const routes = [
{
path: '/',
component: Home,
children: [
{
name: 'sidebar',
path: 'sidebar',
component: Sidebar
},
{
name: 'content',
path: '',
component: MainContent
}
]
}
];
<!-- Home.vue -->
<template>
<div>
<router-view name="sidebar"></router-view> <!-- 渲染 sidebar 组件 -->
<router-view name="content"></router-view> <!-- 渲染 main content 组件 -->
</div>
</template>
- 传递 props:
有时候你可能需要向路由组件传递 props。你可以在路由配置中定义
props
选项。
// router/index.js
const routes = [
{
path: '/user/:id',
component: User,
props: true // 允许路由组件通过 props 接收路由参数
}
];
<!-- User.vue -->
<template>
<div>
User ID: {{ userId }}
</div>
</template>
<script>
export default {
props: ['id']
};
</script>
在上述示例中,<router-view>
会根据当前 URL 的路径渲染对应的组件。当用户导航到不同的路由时,Vue Router 会自动更新 <router-view>
以显示匹配的组件。
确保你的 Vue 应用已经安装并正确配置了 Vue Router,这样 <router-view>
才能正常工作。