Vue 3 : v-for affiche plus de composants que d'éléments
P粉245276769
2023-07-28 17:56:59
<p>Je suis nouveau sur Vue et j'essaie quelques choses. J'utilise également Ionic et je suis nouveau dans ce domaine également. J'ai mon propre composant <trip.card> et je souhaite afficher chaque instance de voyage renvoyée par l'API. </p>
<pre class="brush:php;toolbar:false;"><template>
<page-ion>
<ion-content :fullscreen="true">
<ion-header cliff="condense">
<barre d'outils ionique>
<ion-title size="large">Woadie - Voyages</ion-title>
</barre d'outils ion>
</en-tête-ion>
<trip-card v-for="trip in trips" ref="trips" :tripName="trip.name" />
</contenu ionique>
</page-ion>
</template></pre>
<p>D'après ce que j'ai compris de la documentation, je peux désormais utiliser onMounted pour définir mes données. </p>
<pre class="brush:php;toolbar:false;"><configuration du script lang="ts">
importer {
Contenu Ion,
IonHeader,
Page Ion,
Titre Ion,
Barre d'outils Ion,
} de "@ionic/vue" ;
importer TripCard depuis "./TripCard.vue" ;
importer des axios depuis "axios" ;
importer { ref, onMounted } depuis "vue" ;
const voyages = ref([]);
onMounted(() => {
axios.get("http://localhost:8081/woadie/trips").then((response) => {
voyages.value = réponse.data;
});
});
</script></pre>
<p>À l'heure actuelle, mon API renvoie un tableau contenant une instance de voyage. Cependant, le composant <trip-card> est affiché plusieurs fois. Quelle pourrait en être la raison? </p><p>Dans la documentation, j'ai trouvé l'extrait de code suivant. </p><p><br /></p>
<pre class="brush:php;toolbar:false;"><configuration du script>
importer { ref, onMounted } depuis 'vue'
const liste = réf([
/* ... */
])
const itemRefs = réf([])
onMounted(() => console.log(itemRefs.value))
</script>
<modèle>
<ul>
<li v-for="élément de la liste" ref="itemRefs">
{{ article }}
≪/li>
</ul>
</template></pre>
<p>La différence entre mon implémentation et la documentation semble être const list = ref([]) et <li v-for="item in list" ref="itemRefs"> au lieu d'utiliser directement itemRefs . Pourquoi cette étape supplémentaire ? A quoi sert cette étape supplémentaire ? Ce n'est pas expliqué dans la documentation et je ne comprends pas pourquoi cela est nécessaire. </p>
ref="itemRefs" contiendra tous les <li> rendus par v-for. au lieu des éléments de votre liste.
C'est ce qu'on appelle une référence de modèle :
https://vuejs.org/guide/essentials/template-refs.html