Рэактыўнае выдаленне кампанентаў у Vue
Давайце навучымся рэактыўна выдаляць
даччыныя кампаненты са спісу.
Зробім для гэтага ў кожным даччыным
кампаненце спецыяльную кнопку.
Па націсканні на гэтую кнопку будзе
выпраменьвацца падзея і ў бацькоўскім
кампаненце будзе выдаляцца зададзены
даччыны кампанент па яго id.
Прыступім да рэалізацыі. Хай у бацькоўскім кампаненце дадзены наступны масіў аб'ектаў:
data() {
return {
users: [
{
id: 1,
name: 'name1',
surn: 'surn1'
},
{
id: 2,
name: 'name2',
surn: 'surn2'
},
{
id: 3,
name: 'name3',
surn: 'surn3'
},
],
}
}
Напішам у бацькоўскім кампаненце
метад выдалення юзера па яго id:
methods: {
remove(id) {
this.users = this.users.filter((user) => {
return user.id !== id;
})
}
}
Стварым кампаненты ў цыкле, перадаўшы
іх параметрам імя, прозвішча, id
і метад для выдалення:
<template>
<User
v-for ="user in users"
:id ="user.id"
:name ="user.name"
:surn ="user.surn"
@remove ="remove"
:key ="user.id"
/>
</template>
Прапішам уваходныя даныя ў наладзе props
і выпраменьваемую падзею ў наладзе emits:
props: {
id: Number,
name: String,
surn: String,
},
emits: ['remove'],
Выведзем у прадстаўленні кампанента імя і прозвішча юзера:
<template>
{{ name }}
{{ surn }}
</template>
А цяпер зробім кнопку, па націсканні
на якую будзе выпраменьвацца падзея
для выдалення. Параметрам гэтай падзеі
будзе перадавацца id кампанента.
Бацькоўскі кампанент пры атрыманні
падзеі выдаліць дадзенага юзера з масіву
аб'ектаў і ён рэактыўна знікне
са спісу юзераў.
Такім чынам, рэалізуем гэтую кнопку:
<template>
{{ name }}
{{ surn }}
<button @click="$emit('remove', id)">
remove
</button>
</template>
Выведзіце ў цыкле кампаненты Employee.
Зрабіце ў кожным кампаненце кнопку
для яго выдалення.