Выпадающее меню Tailwind

#vue.js #drop-down-menu #vue-router #tailwind-css #routerlink

#vue.js #выпадающее меню #vue-маршрутизатор #tailwind-css #routerlink

Вопрос:

Я использую следующее выпадающее меню в tailwind amp; vue-router https://codepen.io/huphtur/pen/ordMeN.

Мне нужно использовать <router-link to="/"> внутри выпадающего меню, но я обнаружил, что при этом, как только вы нажимаете на ссылку меню, выпадающее меню не закрывается должным образом. При использовании обычных <a> элементов выпадающее меню закрывается, как и должно быть.

Это код:

выпадающий элемент comp

 <div v-if="isOpen == false" class="dropdown inline-block relative sm:ml-20">
          <button class="text-gray-700 font-normal py-2 px-4 rounded inline-flex items-center">
            <span class="mr-1 cursor-default">Vita</span>
          </button>
          <ul class="w-32 dropdown-menu absolute hidden text-gray-700 pt-1 shadow-lg z-10">
            <li > <router-link to="/biografia"> <a class="rounded-t bg-white hover:bg-gray-200 py-2 px-4 block whitespace-no-wrap text-sm"> Bio </a> </router-link> </li>
            <li > <router-link to="/tour"> <a class="bg-white hover:bg-gray-200 py-2 px-4 block whitespace-no-wrap text-sm"> Tour </a> </router-link> </li>
            <li > <router-link to="/foto"> <a class="bg-white hover:bg-gray-200 py-2 px-4 block whitespace-no-wrap text-sm"> Foto </a> </router-link> </li>
            <li > <router-link to="/video"> <a class="rounded-b bg-white  hover:bg-gray-200 py-2 px-4 block whitespace-no-wrap text-sm"> Video </a> </router-link> </li>
          </ul>
        </div>
}
  

стиль css в comp

 .dropdown:hover .dropdown-menu {
  display: block;
} 
  

Как я могу реализовать эту функциональность с помощью <router-link to="/"> ?

Спасибо!

Комментарии:

1. routerLink генерирует элемент <a> на его месте. Нет необходимости вставлять другую ссылку внутрь. Просто примените классы tailwind к компонентам routerLink.

2. Хорошо, это хорошее предложение, но оно по-прежнему работает не так, как должно.

3. Можете ли вы опубликовать больше вашего кода, в частности, там, где вы определили свой <router-view></router-view> ? Еще более полезным был бы рабочий пример на jsfiddle или подобном сайте.

4. Как вы это решили?

Ответ №1:

router-link предоставляет вам слот для включения настроек. Я использовал это в прошлом, чтобы применить стиль к внешнему li элементу, когда router-link он был активен, но вы можете использовать тот же подход и для закрытия выпадающего списка.

   <router-link
    to="/"
    v-slot="{ href, route, navigate, isActive, isExactActive }"
  >
    <a
      :href="href"
      @click="isOpen = false; navigate($event)"
    >
      Homepage
    </a>
  </router-link>
  

Источник