美文网首页
vue-router: 嵌套路由

vue-router: 嵌套路由

作者: 放不下FBX | 来源:发表于2018-10-23 21:11 被阅读0次

1、重构router/index.js的路由配置,需要使用children数组来定义子路由,具体如下:

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/Home'
import Brand from '@/Brand'
import Member from '@/Member'
import Cart from '@/Cart'
import Me from '@/Me'

import Collection from '@/Collection'
import Trace from '@/Trace'
import Default from '@/Default'

Vue.use(Router)

export default new Router({
// mode: 'history',
// base: __dirname,
// linkActiveClass: 'active', // 更改激活状态的Class值
routes: [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/brand',
name: 'Brand',
component: Brand
},
{
path: '/member',
name: 'Member',
component: Member
},
{
path: '/cart',
name: 'Cart',
component: Cart
},
{
path: '/me',
name: 'Me',
component: Me,
children: [
{
path: 'collection',
name: 'Collection',
component: Collection
},
{
path: 'trace',
name: 'Trace',
component: Trace
}
]
}
]
})
以“/”开头的嵌套路径会被当作根路径,所以子路由上不用加“/”;

在生成路由时,主路由上的path会被自动添加到子路由之前,所以子路由上的path不用在重新声明主路由上的path了。

2、Me.vue的代码如下:
<template>
<div class="me">
<div class="tabs">
<ul>

<router-link :to="{name: 'Collection'}" tag="li" >我的收藏</router-link>
<router-link :to="{name: 'Trace'}" tag="li">我的足迹</router-link>
</ul>
</div>
<div class="content">
<router-view></router-view>
</div>
</div>
</template>
<script type="text/ecmascript-6">

</script>
<style lang="less" rel="stylesheet/less" type="text/less" scoped>
.me{
.tabs{
& > ul, & > ul > li {
margin: 0;
padding: 0;
list-style: none;
}
& > ul{
display: flex;
border-bottom: #cccccc solid 1px;
& > li{
flex: 1;
text-align: center;
padding: 10px;
&.router-link-active {
color: #D0021B;
}
}
}
}
}
</style>
页面效果:

当访问到http://localhost:8080/#/me时,组件Me中<router-view>并没有渲染出任何东西,这是因为没有匹配到合适的子路由。如果需要渲染一些默认内容,需要在children中添加一个空的子路由:

{
path: '',
name: 'Default',
component: Default
},
此时浏览器的效果:默认组件Default被渲染出来了

可以看出不同组件之间用到了相同的class类名,并且设置样式时之间会互相影响,所有我们需要在组件内的style标签上添加scoped属性

<style lang="less" rel="stylesheet/less" type="text/less" scoped>

相关文章

  • 手写 Vue Router、手写响应式实现、虚拟 DOM 和 D

    Vue-Router 原理实现 一、Vue-Router 动态路由 二、Vue-Router 嵌套路由 三、Vue...

  • vue路由

    路由:vue-router 案例: 1.路由 2.路由的嵌套

  • vue 第八章

    路由1.路由下载用gitnpm install vuenpm install vue-router 2.路由嵌套嵌...

  • vue-router

    前端路由的基本原理 vue-router的基本使用 命名路由 路由参数 嵌套路由

  • 回头看 vue-router 复习

    回头看 vue-router 复习 我的github iSAM2016 目录 响应路由参数的变化 嵌套路由 函数...

  • 8月第二周

    8.7 vue-cli vue-router 用法总结: 包含默认路由的地址写法,父子路由的嵌套,redirec...

  • 6.vue-router之命名路由和命名视图(手把手教你用vue

    前言:前面我们把动态路由、嵌套路由等讲完了,说道完命名路由和命名视图,vue-router的基本使用方法就算是完篇...

  • 08-vue-router的使用

    主要从路由设置、重定向、路由嵌套、无相关页面、跳转、入参记录一下。 下载安装vue-router,根目录执行npm...

  • Vue面试题

    active-class是哪个组件的属性?嵌套路由怎么定义? vue-router模块的router-link组件...

  • VUE

    1、active-class是哪个组件的属性?嵌套路由怎么定义? vue-router模块的router-link...

网友评论

      本文标题:vue-router: 嵌套路由

      本文链接:https://www.haomeiwen.com/subject/olkzzftx.html