การลบคอมโพเนนต์แบบรีแอคทีฟใน 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 ในลูป
สร้างปุ่มสำหรับลบคอมโพเนนต์นั้น
ในแต่ละคอมโพเนนต์