Reaktivno uklanjanje komponenti u Vue
Naučimo kako da reaktivno uklanjamo
podređene komponente sa liste.
Napravićemo u svakoj podređenoj
komponenti posebno dugme.
Klikom na ovo dugme biće
emitovan događaj i u roditeljskoj
komponenti će biti uklonjena određena
podređena komponenta po njenom id.
Prionimo na realizaciju. Neka u roditeljskoj komponenti bude sledeći niz objekata:
data() {
return {
users: [
{
id: 1,
name: 'name1',
surn: 'surn1'
},
{
id: 2,
name: 'name2',
surn: 'surn2'
},
{
id: 3,
name: 'name3',
surn: 'surn3'
},
],
}
}
Napišimo u roditeljskoj komponenti
metod za uklanjanje korisnika po njegovom id:
methods: {
remove(id) {
this.users = this.users.filter((user) => {
return user.id !== id;
})
}
}
Kreirajmo komponente u petlji, prosledivši
im kao parametar ime, prezime, id
i metod za uklanjanje:
<template>
<User
v-for ="user in users"
:id ="user.id"
:name ="user.name"
:surn ="user.surn"
@remove ="remove"
:key ="user.id"
/>
</template>
Definišimo ulazne podatke u opciji props
i emitovani događaj u opciji emits:
props: {
id: Number,
name: String,
surn: String,
},
emits: ['remove'],
Prikažimo u prikazu komponente ime i prezime korisnika:
<template>
{{ name }}
{{ surn }}
</template>
A sada napravimo dugme, čijim klikom
će biti emitovan događaj
za uklanjanje. Parametrom ovog događaja
će biti prosleđivan id komponente.
Roditeljska komponenta pri primanju
događaja će ukloniti datog korisnika iz niza
objekata i on će reaktivno nestati
sa liste korisnika.
Dakle, realizujmo ovo dugme:
<template>
{{ name }}
{{ surn }}
<button @click="$emit('remove', id)">
remove
</button>
</template>
Prikažite u petlji komponente Employee.
Napravite u svakoj komponenti dugme
za njeno uklanjanje.