Importa Imágenes Dinámicamente
Las Imágenes locales deben ser importadas en archivos .astro
para poder mostrarlas. Habrá momentos en los que querrás o necesitarás importar dinámicamente las rutas de tus imágenes en lugar de importar explícitamente cada imagen individualmente.
En esta receta, aprenderás a importar dinámicamente tus imágenes usando la función import.meta.glob
de Vite. Construirás un componente de tarjeta que muestra el nombre, la edad y la foto de una persona.
Receta
- Crea un nuevo directorio
assets
dentro del directoriosrc
y agrega tus imágenes dentro de ese nuevo directorio.
Directoriosrc/
Directorioassets/
- avatar-1.jpg
- avatar-2.png
- avatar-3.jpeg
assets
es un nombre de carpeta popular para colocar imágenes, pero eres libre de nombrar la carpeta como quieras.
-
Crea un nuevo componente de Astro para tu tarjeta e importa el componente
<Image />
. -
Especifica las
props
que recibirá tu componente para mostrar la información necesaria en cada tarjeta. Opcionalmente puedes definir sus tipos, si estás usando TypeScript en tu proyecto. -
Crea una nueva variable
images
y usa la funciónimport.meta.glob
que devuelve un objeto con todas las rutas de las imágenes dentro de la carpetaassets
. -
Usa las
props
para crear el marcado de tu componente de tarjeta. -
Dentro del atributo
src
, pasa el objetoimages
y usa la notación de corchetes para la ruta de la imagen. Luego asegúrate de invocar la función glob.
images
es un objeto que contiene todas las rutas de las imágenes dentro de la carpeta assets
.
La prop imagePath
es una cadena que contiene la ruta de la imagen que quieres mostrar. La función import.meta.glob()
está haciendo el trabajo de encontrar la ruta de la imagen que coincide con la prop imagePath
y maneja la importación por ti.
-
Importa y usa el componente de tarjeta dentro de una página de Astro, pasando los valores de las
props
.