⊗jsvuPmCmRR 68 of 72 menu

Ștergerea reactivă a componentelor în Vue

Să învățăm cum să ștergem în mod reactiv componentele copil dintr-o listă. Pentru a face acest lucru, vom crea un buton special în fiecare componentă copil. La apăsarea acestui buton va fi emis un eveniment și în componenta părinte va fi ștearsă componenta copil specificată după id-ul său.

Să începem implementarea. Să presupunem că în componenta părinte avem următorul array de obiecte:

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

Să scriem în componenta părinte o metodă pentru ștergerea utilizatorului după id-ul său:

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

Să creăm componentele într-un ciclu, transmitându-le ca parametri numele, prenumele, id-ul și metoda pentru ștergere:

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

Să definim datele primite în configurația props și evenimentul emis în configurația emits:

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

Să afișăm în template-ul componentei numele și prenumele utilizatorului:

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

Acum să creăm un buton, la apăsarea căruia va fi emis evenimentul pentru ștergere. Parametrul acestui eveniment va fi id-ul componentei. Componenta părinte la primirea evenimentului va șterge utilizatorul respectiv din array-ul de obiecte și acesta va dispărea în mod reactiv din lista de utilizatori.

Deci, să implementăm acest buton:

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

Afișați într-un ciclu componentele Employee. Creați în fiecare componentă un buton pentru ștergerea acesteia.

dehyuzcbnda