Reaktivní odstraňování komponent ve Vue
Naučme se reaktivně odstraňovat
podřízené komponenty ze seznamu.
Vytvořme pro to v každé podřízené
komponentě speciální tlačítko.
Po kliknutí na toto tlačítko bude
vyslána událost a v nadřazené
komponentě bude odstraněna daná
podřízená komponenta podle jejího id.
Pojďme k implementaci. Nechť v nadřazené komponentě je následující pole objektů:
data() {
return {
users: [
{
id: 1,
name: 'name1',
surn: 'surn1'
},
{
id: 2,
name: 'name2',
surn: 'surn2'
},
{
id: 3,
name: 'name3',
surn: 'surn3'
},
],
}
}
Napišme v nadřazené komponentě
metodu pro odstranění uživatele podle jeho id:
methods: {
remove(id) {
this.users = this.users.filter((user) => {
return user.id !== id;
})
}
}
Vytvořme komponenty v cyklu, předáním
jm parametr jméno, příjmení, id
a metodu pro odstranění:
<template>
<User
v-for ="user in users"
:id ="user.id"
:name ="user.name"
:surn ="user.surn"
@remove ="remove"
:key ="user.id"
/>
</template>
Definujme vstupní data v nastavení props
a vysílanou událost v nastavení emits:
props: {
id: Number,
name: String,
surn: String,
},
emits: ['remove'],
Vypišme v šabloně komponenty jméno a příjmení uživatele:
<template>
{{ name }}
{{ surn }}
</template>
A nyní vytvořme tlačítko, po kliknutí
na které bude vyslána událost
pro odstranění. Parametrem této události
bude předáno id komponenty.
Nadřazená komponenta po obdržení
události odstraní daného uživatele z pole
objektů a ten reaktivně zmizí
ze seznamu uživatelů.
Takže, implementujme toto tlačítko:
<template>
{{ name }}
{{ surn }}
<button @click="$emit('remove', id)">
remove
</button>
</template>
Vypište v cyklu komponenty Employee.
V každé komponentě vytvořte tlačítko
pro její odstranění.