1
resposta

[VueJs] Como trabalhar com rotas e menus dropdowns?

No curso de VueJS, aprendemos a trabalhar com rotas para os menus.

criando um arquivo js para definir as rotas e algumas propriedades.

routes.js

export const routes = [
  { path: '', name:'home', component: Home, titulo: 'Home', menu: true },
  { path: '/cadastro', name:'cadastro', component: Cadastro, titulo: 'Cadastro', menu: true },
  { path: '/cadastro/:id', name:'altera', component: Cadastro, titulo: 'Alterar Foto', menu: false },
  { path: '*', component: Home, menu: false }
];

Para exibirmos essas rotas em forma de menus, criamos um v-for para o objeto routes

<li v-for="route in routes">
  <router-link :to="route.path ? route.path : '/'">{{ route.titulo }}</router-link>
</li>

Isso funciona quando temos apenas os menus separados na tela, mas digamos que em um desses menus, teremos um dropdown list, existe uma forma para montar isso automaticamente? ou teriamos que definir os links todos manualmente e perder a funcionalidade do v-for?

obrigado

1 resposta

Oi Thiago. Eu acho que o melhor é montar um objeto com a estrutura completa dos menus nesse caso e não usar o arquivo de rotas diretamente (quando você usar em um arquivo separado). Ou você pode criar um novo objeto com as rotas dos submenus e adicionar ali.

export const routes = [
  { path: '', name:'home', component: Home, titulo: 'Home', menu: true },
  { path: '/cadastro', name:'cadastro', component: Cadastro, titulo: 'Cadastro', menu: true, submenus:[  { path: '/cadastro/:id', name:'altera', component: Cadastro, titulo: 'Alterar Foto', menu: false }] },
  { path: '/cadastro/:id', name:'altera', component: Cadastro, titulo: 'Alterar Foto', menu: false },
  { path: '*', component: Home, menu: false }
];