Importer dynamiquement des images
Les images locales doivent être importées dans les fichiers .astro
afin de les afficher. Il y aura des moments où vous voudrez ou devrez importer dynamiquement les chemins de vos images au lieu d’importer explicitement chaque image individuelle.
Dans cette recette, vous apprendrez à importer dynamiquement vos images en utilisant la fonction import.meta.glob
de Vite. Vous allez construire un composant de carte qui affiche le nom, l’âge et la photo d’une personne.
Recette
Titre de la section Recette-
Créez un nouveau dossier
assets
sous le répertoiresrc
et ajoutez vos images dans ce nouveau dossier.Répertoiresrc/
Répertoireassets/
- avatar-1.jpg
- avatar-2.png
- avatar-3.jpeg
assets
est une convention de nom de dossier populaire pour placer des images, mais vous êtes libre de nommer le dossier comme vous le souhaitez. -
Créez un nouveau composant Astro pour votre carte et importez le composant
<Image />
. -
Spécifiez les
props
que votre composant recevra afin d’afficher les informations nécessaires sur chaque carte. Vous pouvez optionnellement définir leurs types, si vous utilisez TypeScript dans votre projet. -
Créez une nouvelle variable
images
et utilisez la fonctionimport.meta.glob
qui retourne un objet contenant tous les chemins d’accès aux images dans le dossierassets
. Vous devrez également importer le typeImageMetadata
pour vous aider à définir le type de la variableimages
. -
Utilisez les props pour créer le balisage de votre composant de carte.
-
Dans l’attribut
src
, passez l’objetimages
et utilisez la notation entre crochets pour le chemin de l’image. Assurez-vous ensuite d’invoquer la fonction glob.Puisque vous accédez à l’objet
images
qui a un type inconnu, vous devriez aussi renvoyer une erreur dans le cas où un chemin de fichier invalide est passé en tant que propriété.images
est un objet qui contient tous les chemins d’accès aux images dans le dossierassets
.La propriété
imagePath
est une chaîne de caractères qui contient le chemin de l’image que vous voulez afficher.import.meta.glob()
se charge de trouver le chemin de l’image qui correspond à la propriétéimagePath
et de gérer l’importation pour vous. -
Importer et utiliser le composant carte dans une page Astro, en passant les valeurs pour les
props
.