Reaktiivne komponentide eemaldamine Vue's
Õpime reaktiivselt eemaldama
laps komponente loendist.
Selleks teeme igas laps komponendis
spetsiaalse nupu.
Sellele nupule vajutades
emiteeritakse sündmus ja vanem komponendis
eemaldatakse määratud
laps komponent selle id järgi.
Asume rakendamise juurde. Olgu vanem komponendis antud järgmine objektide massiiv:
data() {
return {
users: [
{
id: 1,
name: 'name1',
surn: 'surn1'
},
{
id: 2,
name: 'name2',
surn: 'surn2'
},
{
id: 3,
name: 'name3',
surn: 'surn3'
},
],
}
}
Kirjutame vanem komponendis
meetodi kasutaja eemaldamiseks tema id järgi:
methods: {
remove(id) {
this.users = this.users.filter((user) => {
return user.id !== id;
})
}
}
Loome komponendid tsüklis, edastades
neile parameetritena nime, perekonnanime, id
ja eemaldamise meetodi:
<template>
<User
v-for ="user in users"
:id ="user.id"
:name ="user.name"
:surn ="user.surn"
@remove ="remove"
:key ="user.id"
/>
</template>
Kirjutame sissetulevad andmed seadistuses props
ja emiteeritava sündmuse seadistuses emits:
props: {
id: Number,
name: String,
surn: String,
},
emits: ['remove'],
Kuvame komponendi esitluses kasutaja ees- ja perekonnanime:
<template>
{{ name }}
{{ surn }}
</template>
Nüüd teeme nupu, millele vajutamisel
emiteeritakse sündmus
eemaldamiseks. Selle sündmuse parameetrina
edastatakse komponendi id.
Vanem komponent sündmuse saamisel
eemaldab selle kasutaja objektide massiivist
ja ta reaktiivselt kaob
kasutajate loendist.
Niisiis, rakendame selle nupu:
<template>
{{ name }}
{{ surn }}
<button @click="$emit('remove', id)">
remove
</button>
</template>
Kuva tsüklis komponendid Employee.
Tee igas komponendis nupp
selle eemaldamiseks.