Я настроил простой проект Vue (с vue-router и Vuetify), и я пытаюсь получить дочерний маршрут по умолчанию для загрузки при доступе к родительскому маршруту.
Я сделал мойдля этого лучше всего следовать документам Vue, но дочерний маршрут по умолчанию просто не загружается, когда я обращаюсь к его родителю.
Вот код в router.js
файле:
import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home'
import Details from './views/Details'
import List from './views/List'
import NotFound from './views/NotFound'
import Secondary from './views/Secondary'
import Sections from './views/Sections'
Vue.use(Router)
export default new Router({
mode: 'history',
routes: [
{
path: '/',
name: 'route.home',
component: Home
},
{
path: '/list',
name: 'route.list',
component: List
},
{
props: true,
path: '/sections/:id',
name: 'route.sections',
component: Sections,
children: [
{
alias: '',
path: 'details',
name: 'route.details',
component: Details
},
{
path: 'secondary',
name: 'route.secondary',
component: Secondary
}
]
},
{
path: '*',
name: 'route.notfound',
component: NotFound
}
]
})
А вот ссылка на проект CodeSandbox.io: https://codesandbox.io/s/l41zk6olqz
Если вы выполните следующие действия в песочнице, вы увидите, что происходит:
- Когда на Домашняя страница , щелкните ссылку Перейти к списку
- На странице Список щелкните ссылку Перейти к разделам
- Когда загружается страница Sections , я ожидаю дочерний маршрут по умолчанию (с именем
route.details
для загрузки), однако он не
The Сведения страница действительно загружается, если щелкнуть ссылку Подробно в списке вкладок.Я уверен, что это простая ошибка, но я не вижу дрова для деревьев.
Заранее спасибо.
Обновление (2019-04-03 @ 07:00): Дальнейшее копание, и похоже, что работает следующее: router.js
...
{
props: true,
path: '/sections/:id',
// name: 'route.sections',
component: Sections,
children: [
{
alias: '',
path: 'details',
name: 'route.details',
component: Details
},
{
path: 'secondary',
name: 'route.secondary',
component: Secondary
}
]
}
...
А затем изменение router-link
с :to="{ name: 'route.sections', params: { id: 1 } }"
на :to="{ name: 'route.details', params: { id: 1 } }"
Теперь разрешает дочерний маршрут по умолчанию.Это ожидается?Я получил информацию из этого SO-ответа: https://stackoverflow.com/a/50065601/9127864
Обновление (2019-04-03 @ 07:28): даже дальнейшее копание показывает, что это также возможно: router.js
...
{
props: true,
path: '/sections/:id',
name: 'route.sections',
component: Sections,
redirect: {
name: 'route.details'
},
children: [
{
alias: '',
path: 'details',
name: 'route.details',
component: Details
},
{
path: 'secondary',
name: 'route.secondary',
component: Secondary
}
]
}
...
Затем я могу изменить router-link
обратно на :to="{ name: 'route.sections', params: { id: 1 } }"
, и дочерний маршрут по умолчанию теперь загружается, когда пользователь обращается к родительскому маршрутизатору.
Надеюсь, это поможет кому-то еще в будущем.