47. Vue使用children属性实现路由嵌套
时间:2022-07-22
本文章向大家介绍47. Vue使用children属性实现路由嵌套,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
前面基本演示完了vue-router
的基本用法,但是当组件之间嵌套子组件,这个嵌套的路由该怎么写呢?
可能这一句话不能够直接说明情况,下面来直接看例子。
嵌套路由示例
1.首先写三个组件,一个account组件,另外两个子组件login和register
<script>
// 1. 定义 (路由) 组件。
// 可以从其他文件 import 进来
// 创建account组件
var account = {
template: "#account",
}
// 创建登陆组件login
var login = {
template: "<h3>登陆组件</h3>",
}
// 创建注册组件register
var register = {
template: "<h3>注册组件</h3>",
}
2.编写这三个组件的路由规则,如下:
// 2. 定义路由
// 每个路由应该映射一个组件。 其中"component" 可以是
// 通过 Vue.extend() 创建的组件构造器,
// 或者,只是一个组件配置对象。
// 我们晚点再讨论嵌套路由。
var routes = [
{ path: '/', redirect: '/account' },
{ path: '/account', component: account },
{ path: '/account/login', component: login },
{ path: '/account/register', component: register },
]
// 3. 创建 router 实例,然后传 `routes` 配置
// 你还可以传别的配置参数, 不过先这么简单着吧。
var router = new VueRouter({
routes, // (缩写) 相当于 routes: routes
linkActiveClass: "myactive", // 自定义选中的class
})
// 创建vue的实例
var vm = new Vue({
el: '#app',
data: {},
methods:{},
// 注册局部组件,注意:下面使用vue-router的话,不需要在这里注册组件
components:{},
// 将路由规则对象,注册到 vm 实例上,用来监听 URL 地址的变化,然后展示对应的组件
router, // 等价于 router: router
})
</script>
可以从上面看到,我在写regster
和login
的路由路径是/account/register
和/account/login
,其实跟/account
路由没有太大的关系。
只是简单写了个前缀而已。
3.编写组件展示的router-view
<div id="app">
<router-link to="/account">Account</router-link>
<!-- 路由出口 -->
<!-- 路由匹配到的组件将渲染在这里 -->
<transition mode="out-in">
<router-view></router-view>
</transition>
</div>
<template id="account">
<div>
<h1>这是 Account 组件</h1>
<!-- 设置嵌套组件的跳转标签 -->
<router-link to="/account/login">登录</router-link>
<router-link to="/account/register">注册</router-link>
<!-- 设置嵌套组件的router-view -->
<router-view></router-view>
</div>
</template>
可以看到,父组件app
下只能直接访问account
组件,然后再通过account
组件访问login
和register
嵌套组件。
下面来看看效果。
4.在浏览器中点击登陆
组件,确认是否在account
组件下,显示登陆
组件。
image-20200222223639400
实际效果如下:
image-20200222223728252
5.使用children
属性,修改嵌套路由规则
image-20200222224024009
// 2. 定义路由
// 每个路由应该映射一个组件。 其中"component" 可以是
// 通过 Vue.extend() 创建的组件构造器,
// 或者,只是一个组件配置对象。
// 我们晚点再讨论嵌套路由。
var routes = [
{
path: '/',
redirect: '/account'
},
{
path: '/account',
component: account,
// 使用 children 属性,实现子路由,同时,子路由的 path 前面,不要带 / ,
// 否则永远以根路径开始请求,这样不方便我们用户去理解URL地址
children: [
{
path: 'login',
component: login
},
{
path: 'register',
component: register
}
]
},
]
6.在浏览器查看嵌套路由的效果
image-20200222224118563
可以看到,登陆组件是在Account
组件内嵌套显示了。
当然,注册组件也是一样。这样就实现好了一个嵌套组件的效果。
image-20200222224156789
- HTML5 Blob与ArrayBuffer、TypeArray和字符串String之间转换
- Mybatis 3 配置 Log4j
- 基于Three.js的360度全景--photo-sphere-viewer--简介
- MyBatis3-配置使用log4j输出日志
- nginx支持跨域访问
- nginx静态资源文件无法访问,403 forbidden错误
- vue.js如何在标签属性中插入变量参数
- SpringBoot解决ajax跨域问题
- WebBrowser(IE) 与 JS 相互调用
- HOSTS配置问题导致集群异常故障分析
- Linux Regulator Framework(2)_regulator driver
- systemd的作用
- alsa声卡分析alsa-utils调用过程(二)-tinymixer
- alsa声卡分析alsa-utils调用过程(一)-tinyplay
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法