Me gustaría preguntar sobre el niño predeterminado de representación para la vista. Sé que existe un tema con un problema similar, pero estoy bastante seguro de que fue para VUE2 y vue-router anteriores. Tengo problemas para mostrar el elemento secundario predeterminado para la categoría de vista. Cuando iba a <router-link :to="{ name: routeName, params: { category: item.id } } todo funciona bien excepto <router-view /> está vacío...
Se me ocurrió una solución con beforeUpdate(),beforeCreate() pero parece como reinventar la rueda. Si voy a /category/{id} y luego a /category/{id}/room/{id} y regreso una página, se mostrará la vista predeterminada
¿Cómo hacer que el niño predeterminado se cargue después de ir a /category/{id}?
enrutador.js
{ path: '/category/:category', name: 'Category', props: true, component: Category, children: [ { path: '', name: 'FavouriteDevicesInCategory', component: Devices, props: true, }, { path: 'room/:room', name: 'Devices', component: Devices, props: true, }, ], },Categoría.vue - ver
<template> <div class="control"> <div class="left"> [...] </div> <div class="right"> <router-view /> </div> </div> </template> <script> export default { props: ['category', 'room'], /** generate default router-view */ beforeUpdate() { this.$router.push(''); }, beforeCreate() { this.$router.push(''); }, };Si su componente predeterminado es Category , debe crear las rutas de esta manera:
{ path: '/category', name: 'Category', props: true, component: Category, children: [ { path: '/:categoryId', name: 'FavouriteDevicesInCategory', component: Devices, props: true, }, { path: 'room/:roomId', name: 'Devices', component: Devices, props: true, }, ], }, De forma predeterminada, representará el componente Category y, si agrega una id a la URL, irá al componente Devices .
Creo que encontré una solución, un poco desordenada, pero parece ser la mejor solución a este problema.
{ path: '/category/:category', // name: 'Category', props: true, component: Category, children: [ { path: '', name: 'Category', component: Devices, props: true, }, { path: 'room/:room', name: 'Devices', component: Devices, props: true, }, ], },