การลบคอมโพเนนต์แบบรีแอคทีฟใน Vue

มาเรียนรู้วิธีการลบคอมโพเนนต์ลูก จากรายการแบบรีแอคทีฟกัน เพื่อทำสิ่งนี้ ให้สร้างปุ่มพิเศษ ในแต่ละคอมโพเนนต์ลูก เมื่อคลิกที่ปุ่มนี้ จะมีการปล่อยอีเวนต์ และในคอมโพเนนต์หลัก จะทำการลบ คอมโพเนนต์ลูกที่กำหนดตาม id ของมัน

มาเริ่มการดำเนินการกัน ให้ในคอมโพเนนต์หลัก มีอาร์เรย์ของอ็อบเจกต์ดังต่อไปนี้:

App.vuedata() {
  return {
    users: [
      {
        id: 1,
        name: 'name1',
        surn: 'surn1'
      },
      {
        id: 2,
        name: 'name2',
        surn: 'surn2'
      },
      {
        id: 3,
        name: 'name3',
        surn: 'surn3'
      },
    ],
  }
}

มาเขียนเมธอดสำหรับลบผู้ใช้ ตาม id ของเขาในคอมโพเนนต์หลัก:

App.vuemethods: {
  remove(id) {
    this.users = this.users.filter((user) => {
      return user.id !== id;
    })
  }
}

มาสร้างคอมโพเนนต์ในลูป โดยส่ง ชื่อ นามสกุล id และเมธอดสำหรับการลบเป็นพารามิเตอร์:

App.vue<template>
  <User
    v-for   ="user in users"
    
    :id     ="user.id"
    :name   ="user.name"
    :surn   ="user.surn"
    @remove ="remove"
    :key    ="user.id"
  />
</template>

กำหนดข้อมูลขาเข้าในการตั้งค่า props และอีเวนต์ที่ปล่อยออกมาในการตั้งค่า emits:

components/User.vueprops: {
  id:     Number,
  name:   String,
  surn:   String,
},
emits: ['remove'],

มาแสดงชื่อและนามสกุลของผู้ใช้ ในเทมเพลตของคอมโพเนนต์:

components/User.vue<template>
  {{ name }}
  {{ surn }}
</template>

และตอนนี้มาสร้างปุ่ม ที่เมื่อคลิก จะปล่อยอีเวนต์สำหรับการลบ พารามิเตอร์ของอีเวนต์นี้ จะส่ง id ของคอมโพเนนต์ไปด้วย คอมโพเนนต์หลักเมื่อได้รับอีเวนต์ จะลบผู้ใช้นี้ออกจากอาร์เรย์ของอ็อบเจกต์ และมันจะหายไปจากรายการผู้ใช้แบบรีแอคทีฟ

ดังนั้น มาดำเนินการปุ่มนี้:

components/User.vue<template>
  {{ name }}
  {{ surn }}
  
  <button @click="$emit('remove', id)">
    remove
  </button>
</template>
Задание 1

แสดงคอมโพเนนต์ Employee ในลูป สร้างปุ่มสำหรับลบคอมโพเนนต์นั้น ในแต่ละคอมโพเนนต์