Vue.js 学习笔记十三:Vue Router 之嵌套路由

目录

嵌套路由


嵌套路由

嵌套路由是一个很常见的功能,比如在 home 页面中,我们希望通过 /home/news/home/message 访问一些内容。一个路径映射一个组件, 访问这两个路径也会分别渲染两个组件。

路径和组件的关系如下:

/home/news                     		  /home/message
+------------------+                  +-----------------+
| Home             |                  | Home            |
| +--------------+ |                  | +-------------+ |
| | News         | |  +------------>  | | Message     | |
| |              | |                  | |             | |
| +--------------+ |                  | +-------------+ |
+------------------+                  +-----------------+

实现嵌套路由有两个步骤:

  • 创建对应的子组件,并且在路由映射中配置对应的子路由。

  • 在组件内部使用 <router-view> 标签。

 

定义两个组件:

src/views/news.vue

<template>
	<ul>
		<li>新闻1</li>
		<li>新闻2</li>
		<li>新闻3</li>
	</ul>
</template>

<script>
	export default {
		name: 'News'
	}
</script>

<style>
</style>

src/views/message.vue

<template>
	<ul>
		<li>消息1</li>
		<li>消息2</li>
		<li>消息3</li>
	</ul>
</template>

<script>
	export default {
		name: 'Message'
	}
</script>

<style>
</style>

src/views/home.vue

<template>
	<div>	
		<h2>我是首页的标题</h2>
		<p>我是首页的内容</p>
		<router-link to="/home/news">新闻</router-link> |
		<router-link to="/home/message">消息</router-link>
		<router-view/>
	</div>
</template>

要在嵌套的出口中渲染组件,需要在 VueRouter 的参数中使用 children 配置:

src/router/index.js

...
const News = () => import('../views/news')
const Message = () => import('../views/message')
const routes = [
  {
    path: '/home',
    name: 'Home',
    component: Home,
	alias: '/index',
	children: [
         // 当 /home/news 匹配成功,
         // news 会被渲染在 home 的 <router-view> 中
		{
			path: 'news',
			component: News
		},
        // 当 /home/message 匹配成功,
        // message 会被渲染在 home 的 <router-view> 中
		{
			path: 'message',
			component: Message
		}
	]
  }
]
...

嵌套路由也可以配置默认的路径,配置方式如下:

const routes = [
  {
    path: '/home',
    name: 'Home',
    component: Home,
	alias: '/index',
	children: [
		...
         // 当 /home 匹配成功,
         // news 会被渲染在 home 的 <router-view> 中
		{
			path: '',
			component: News
		}
	]
  }
]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stary1993

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值