livewire 에서 wire:navigate.hover 옵션 사용하면서 alpinejs 컨트롤 하는 방법
Updated on
<a href="{{ route($childNavigation->route) }}" class="block rounded-md py-2 pl-5 text-base font-medium text-gray-900 hover:bg-gray-100 hover:text-gray-800" wire:navigate.hover> {{ $childNavigation->name }} </a>
위 코드처럼 livewire 에서 wire:navigate.hover
기능을 사용하는 경우가 많다.
그런데 이때 사용하면서, alpinejs component 의 data를 컨트롤 해야할때가 있는데. @click= 이벤트로는 컨트롤이 될때가 있고 안될때가 있다.
그 이유는 @click 이벤트 액션이 일어나기 전에 이미 href 로 이동하기 때문이다.
이 문제를 해결하려면,
<a href="{{ route($childNavigation->route) }}" @click.prevent="$store.navigation.toggleMobileMenu(); Livewire.navigate('{{ route($childNavigation->route) }}')" class="block rounded-md py-2 pl-5 text-base font-medium text-gray-900 hover:bg-gray-100 hover:text-gray-800"> {{ $childNavigation->name }} </a>
이런식으로 사용해줘야 한다.
wire:navigate.hover
옵션은 제거하고, @click.prevent
이벤트를 실행시켜서 처리해야 한다.