⊗jsvuPmCmRR 68 of 72 menu

Suppression réactive de composants dans Vue

Apprenons à supprimer réactivement des composants enfants d'une liste. Pour ce faire, créons un bouton spécial dans chaque composant enfant. Lorsqu'on clique sur ce bouton, un événement est émis et le composant parent supprimera le composant enfant spécifié par son id.

Passons à la mise en œuvre. Supposons que le composant parent ait le tableau d'objets suivant :

data() { return { users: [ { id: 1, name: 'name1', surn: 'surn1' }, { id: 2, name: 'name2', surn: 'surn2' }, { id: 3, name: 'name3', surn: 'surn3' }, ], } }

Écrivons dans le composant parent une méthode pour supprimer un utilisateur par son id :

methods: { remove(id) { this.users = this.users.filter((user) => { return user.id !== id; }) } }

Créons les composants dans une boucle, en leur passant en paramètre le nom, le prénom, l'id et la méthode de suppression :

<template> <User v-for ="user in users" :id ="user.id" :name ="user.name" :surn ="user.surn" @remove ="remove" :key ="user.id" /> </template>

Déclarons les données entrantes dans l'option props et l'événement émis dans l'option emits :

props: { id: Number, name: String, surn: String, }, emits: ['remove'],

Affichons dans le template du composant le nom et le prénom de l'utilisateur :

<template> {{ name }} {{ surn }} </template>

Maintenant, créons un bouton qui, lorsqu'on clique dessus, émettra un événement de suppression. Le id du composant sera passé en paramètre de cet événement. Le composant parent, en recevant l'événement, supprimera cet utilisateur du tableau d'objets et il disparaîtra réactivement de la liste des utilisateurs.

Implémentons ce bouton :

<template> {{ name }} {{ surn }} <button @click="$emit('remove', id)"> remove </button> </template>

Affichez les composants Employee dans une boucle. Créez dans chaque composant un bouton pour le supprimer.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser