Vue में रिएक्टिव कंपोनेंट हटाना

आइए सूची से चाइल्ड कंपोनेंट्स को रिएक्टिव तरीके से हटाना सीखें। इसके लिए प्रत्येक चाइल्ड कंपोनेंट में एक विशेष बटन बनाएंगे। इस बटन पर क्लिक करने पर एक इवेंट emit होगा और पैरेंट कंपोनेंट में उसके 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 कॉन्फ़िगरेशन में emit होने वाले इवेंट को डिक्लेयर करें:

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

आइए कंपोनेंट के टेम्पलेट में यूजर का नाम और उपनाम दिखाएं:

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

और अब एक बटन बनाएं, जिस पर क्लिक करने पर हटाने के लिए एक इवेंट emit होगा। इस इवेंट के पैरामीटर के रूप में कंपोनेंट का id पास किया जाएगा। इवेंट प्राप्त करने पर, पैरेंट कंपोनेंट ऑब्जेक्ट्स की सरणी से इस यूजर को हटा देगा और यह यूजर्स की सूची से रिएक्टिव तरीके से गायब हो जाएगा।

आइए, इस बटन को इम्प्लीमेंट करें:

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

लूप में Employee कंपोनेंट्स रेंडर करें। प्रत्येक कंपोनेंट में इसे हटाने के लिए एक बटन बनाएं।