с /*
до {name: root}
с перенаправлением на /root
отображает root.firstchild
Площадка ниже ...
именованные маршруты -> использовать redirect
для маршрутизации вашего name: home
в name: home.index
- пример с переименованием для удобства использования
const router = new VueRouter({
routes: [{
path: '/home',
name: 'child1', // cheated child
redirect: '/home', // here point to true child
component: Home,
children: [
{
path: '', // this is accesible by /home !
//name: 'child1',
component: Child1,
},
{
path: ':slug',
name: 'child2',
component: Child2,
}
]
}]
})
Итак, проблема в вашем <router-link>
.Скорее всего, к нему добавлен /
, поэтому путь будет иметь его.
В основном, если вы направите
из: /a/b
в /a
это будет /a
с: /a/
до /a
это будет /a/
с: /a
до /a/
это будет /a
до: name: root
это будет /a
без рендеринга первого ребенка
до: name: root.firstChild
это будет /a/
На маршрутна /root
<=> root.firstChild
из любого места по имени вы должны направить на {имя: root}, а затем перенаправить на /root
.
с /*
на {name: root}
перенаправить на /root
делает ребенка
детская площадка
const Home = {
template: "#home"
}
const Child1 = {
template: "#child1"
}
const Child2 = {
template: "#child2"
}
const router = new VueRouter({
routes: [{
path: '/home',
name: 'home',
redirect: '/home',
component: Home,
children: [
{
path: '',
name: 'child1',
component: Child1,
},
{
path: ':slug',
name: 'child2',
component: Child2,
}
]
}]
});
new Vue({
template: "#index",
router
}).$mount('#app');
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://unpkg.com/vue-router@2.0.0/dist/vue-router.js"></script>
<div id="app">
<router-view></router-view>
</div>
<template id="index">
<div>
Index
<router-link :to="{name: 'home'}">Go to /home</router-link>
<router-link :to="{name: 'child1'}">Go to /home/</router-link>
<router-link :to="{name: 'child2', params: {slug: 'any'}}">Go to /home/slug</router-link>
<router-view></router-view>
</div>
</template>
<template id="home">
<div>
Home
<router-view></router-view>
</div>
</template>
<template id="child1">
<div>{{$route.fullPath}}</div>
</template>
<template id="child2">
<div>{{$route.fullPath}}</div>
</template>