Reaktívne odstraňovanie komponentov vo Vue
Naučme sa reaktívne odstraňovať
podradené komponenty zo zoznamu.
Urobme na to v každom podradenom
komponente špeciálne tlačidlo.
Kliknutím na toto tlačidlo bude
vyvolaná udalosť a v nadradenom
komponente bude odstránený daný
podradený komponent podľa jeho id.
Poďme na implementáciu. Nech v nadradenom komponente je nasledujúce pole objektov:
data() {
return {
users: [
{
id: 1,
name: 'name1',
surn: 'surn1'
},
{
id: 2,
name: 'name2',
surn: 'surn2'
},
{
id: 3,
name: 'name3',
surn: 'surn3'
},
],
}
}
Napíšme v nadradenom komponente
metódu na odstránenie používateľa podľa jeho id:
methods: {
remove(id) {
this.users = this.users.filter((user) => {
return user.id !== id;
})
}
}
Vytvorme komponenty v cykle, pričom im
odovzdáme parametrom meno, priezvisko, id
a metódu na odstránenie:
<template>
<User
v-for ="user in users"
:id ="user.id"
:name ="user.name"
:surn ="user.surn"
@remove ="remove"
:key ="user.id"
/>
</template>
Zadefinujme prichádzajúce dáta v nastavení props
a vyvolávanú udalosť v nastavení emits:
props: {
id: Number,
name: String,
surn: String,
},
emits: ['remove'],
Vypíšme v prezentácii komponentu meno a priezvisko používateľa:
<template>
{{ name }}
{{ surn }}
</template>
A teraz urobme tlačidlo, ktorého kliknutím
bude vyvolaná udalosť
na odstránenie. Parametrom tejto udalosti
bude odovzdávané id komponentu.
Nadradený komponent pri prijatí
udalosti odstráni daného používateľa z poľa
objektov a ten reaktívne zmizne
zo zoznamu používateľov.
Takže, implementujme toto tlačidlo:
<template>
{{ name }}
{{ surn }}
<button @click="$emit('remove', id)">
remove
</button>
</template>
Vypíšte v cykle komponenty Employee.
Urobte v každom komponente tlačidlo
na jeho odstránenie.