Vue-এ কম্পোনেন্ট ডেটা রিঅ্যাক্টিভ সম্পাদনা

এখন আসুন আমাদের চাইল্ড কম্পোনেন্টগুলির ডেটা সম্পাদনা বাস্তবায়ন করি। প্রথমে, প্যারেন্ট কম্পোনেন্টে এর id দ্বারা ব্যবহারকারী পরিবর্তন করার একটি পদ্ধতি তৈরি করি:

App.vuemethods: {
  change(id, name, surn) {
    this.users = this.users.map((user) => {
      if (user.id === id) {
        user.name = name;
        user.surn = surn;
      }
      return user;
    });
  }
}

এগুলিকে নাম, উপাধি, id এবং পরিবর্তন করার পদ্ধতি প্যারামিটার হিসেবে প্রেরণ করে লুপে কম্পোনেন্টগুলি তৈরি করি:

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

চাইল্ড কম্পোনেন্টের সেটআপে emits-এ নির্গত ইভেন্টটি সংজ্ঞায়িত করি:

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

এখন চাইল্ড কম্পোনেন্টে একটি প্রপার্টি তৈরি করি যা কম্পোনেন্টের মোড নির্ধারণ করবে, প্রদর্শন বা সম্পাদনা:

components/User.vuedata() {
  return {
    isEdit: false,
  }
}

সম্পাদনার জন্য ইনপুটগুলির কাজ সমর্থন করার জন্য প্রপার্টিগুলিও তৈরি করি:

components/User.vuedata() {
  return {
    isEdit: false,
    newName: '',
    newSurn: '',
  }
}

এই প্রপার্টিগুলির প্রাথমিক মান যাতে প্রপ্স থেকে নেওয়া হয় তা নিশ্চিত করি:

components/User.vuedata() {
  return {
    isEdit: false,
    newName: this.name,
    newSurn: this.surn,
  }
}

একটি পদ্ধতি তৈরি করি যা সম্পাদনা মোড চালু করবে:

components/User.vuemethods: {
  edit() {
    this.isEdit = true;
  }
}

একটি পদ্ধতি তৈরি করি যা সম্পাদিত ডেটা সংরক্ষণ করবে, একই সাথে সম্পাদনা মোড বন্ধ করবে:

components/User.vuemethods: {
  save() {
    this.isEdit = false;
    this.$emit('change', this.id, this.newName, this.newSurn);
  }
}

চাইল্ড কম্পোনেন্টের টেমপ্লেট তৈরি করি:

components/User.vue<template>
  <template v-if="!isEdit">
    {{ name }}
    {{ surn }}
    <button @click="edit">
      edit
    </button>
  </template>
  <template v-else>
    <input v-model="newName">
    <input v-model="newSurn">
    <button @click="save">
      save
    </button>
  </template>
</template>
Задание 1

Employee কম্পোনেন্টের ডেটা সম্পাদনা বাস্তবায়ন করুন।