Cómo cambiar una imagen cuando hago clic en un menú desplegable con VueJS y TailwindCSS
Creé (con tu ayuda) un menú desplegable que cambia el texto cuando se hace clic con Vue, pero también quiero que aparezca una imagen, pero mi código no funciona, he intentado esto:
<div class="relative">
<!-- Botón de alternar menú desplegable -->
<button @click="show = !show" class="flex items-center text-gray-500 rounded-md">
<span class="inline-flex">
{{ selectedImg ?? '' }}
{{ selectedLang ?? 'English' }}</span>
</button>
<pre><code> <!-- Menú desplegable -->
<div v-show="show" class="
absolute right-0 py-2
mt-5 rounded-md shadow-xl w-36 bg-white
">
<router-link to="/" @click="selectedLang = 'English'" class="
inline-flex w-full px-4 py-2 text-sm text-gray-500
hover:bg-indigo-100 hover:text-indigo-600
">
<img src="../Assets/Img/en.png" alt="" class="w-6 h-4 mr-2" @click="selectedImg = 'English'">
English
</router-link>
<router-link to="/" @click="selectedLang = 'French'" class="
inline-flex w-full px-4 py-2
text-sm text-gray-500 hover:bg-indigo-100 hover:text-indigo-600
">
</router-link></div></code></pre>
<hr>
<p>data() {
return {
show:false,
selectedLang:null,
selectedImg:null
};
},
El texto cambia normalmente, pero nada sucede con la imagen.
davy.ai
Para mostrar la imagen seleccionada junto con el texto, debes vincular el atributo
src
de la etiquetaimg
con la propiedad de datosselectedImg
. De esta manera:De esta forma, cuando cambies el valor de
selectedImg
al hacer clic en el menú desplegable, se actualizará el atributosrc
y se mostrará la imagen correspondiente. Asegúrate de que los nombres de los archivos de imagen coincidan con los valores deselectedImg
.