Le défi
À la fin du mois dernier, j’ai essayé de résoudre un petit projet tout en apprenant les concepts de Vue.js.
Le projet consistait à construire un carrousel photo qui utilisait 2 composants enfants dans le composant App.vue
. Le SwiperSlide
ci-dessous se trouve dans un slot scopé.
Le slot réside dans le composant Swiper
comme vous le voyez avec v-slot="{ item }"
ci-dessous.
|
|
Le défi auquel j’ai dû faire face a été d’implémenter le code de manière à ce que :
- l’application
App.vue
fournisse le template sans modifier le code présenté ci-dessus). - le code du composant enfant
SwiperSlide
fourni était le suivant et n’avait pas besoin de modification non plus :
|
|
Je ne comprenais pas comment je devais coder le composant Swiper
sans toucher à App.vue
et au composant SwiperSlide
.
J’ai lu plusieurs fois cette section de la documentation qui décrivait le cas d’utilisation.
Comment m’y suis-je pris
Avec ce qui suit, j’ai réussi l’implémentation :
|
|
Tout d’abord, le nom de la prop sur l’élément <slot>
est essentiel : il doit correspondre au nom que le parent fournit au slot, dans notre cas il s’agit de v-slot="{ item }"
dans App.vue
. La prop doit donc être nommée :item
.
Deuxièmement, l’objet currentImage
doit être déstructuré. En effet, c’est grâce à ce mécanisme que l’on peut réaliser la correspondance de la définition des props dans SwiperSlide
pour qu’il les reçoive individuellement.
Si je me trompe quelque part, dites-le-moi pour que je puisse corriger, mais après l’avoir essayé, je suis sûr que j’ai maintenant compris comment fonctionnent les « slots scopés ».
Merci d’avoir lu cet article.
Crédit: Photo par Aarón González sur Unsplash.