Vue တွင် Component ၏ Data များကို Reactive အပြောင်းအလဲလုပ်ခြင်း

ယခု ကျွန်ုပ်တို့၏ Child Component များ၏ data များကို တည်းဖြတ်ခြင်း လုပ်ဆောင်ချက်ကို အကောင်အထည်ဖော်ကြပါစို့။ အစတွင် Parent Component ထဲတွင် User ၏ id အတိုင်း ပြောင်းလဲရန် method တစ်ခုကို လုပ်ဆောင်ပါမည်။

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

သူတို့အား name, surname, id နှင့် ပြောင်းလဲရန် method ကို parameter အဖြစ် ပေးသွားကာ Component များကို loop ဖြင့် ဖန်တီးပါမည်။

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

Child Component ၏ ပြင်ဆင်ချက် emits ထဲတွင် ထုတ်လွှင့်မည့် event ကို သတ်မှတ်ပါမည်။

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

ယခု Child Component ထဲတွင် Component ၏ Mode ကို သတ်မှတ်ပေးမည့် property တစ်ခုကို လုပ်ဆောင်ပါမည်။ ၎င်းသည် ပြသခြင်း သို့မဟုတ် တည်းဖြတ်ခြင်း ဖြစ်သည်။

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

တည်းဖြတ်ခြင်းအတွက် input များ၏ အလုပ်လုပ်ဆောင်မှုကို ပံ့ပိုးပေးမည့် property များကိုလည်း လုပ်ဆောင်ပါမည်။

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

ထို property များ၏ ကနဦးတန်ဖိုးများကို props မှ ရယူသွားအောင် လုပ်ဆောင်ပါမည်။

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

တည်းဖြတ်ခြင်း Mode ကို စတင်မည့် method တစ်ခုကို လုပ်ဆောင်ပါမည်။

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

တည်းဖြတ်ထားသော data များကို သိမ်းဆည်းမည့် method တစ်ခုကို လုပ်ဆောင်ပါမည်။ ၎င်းသည် တည်းဖြတ်ခြင်း Mode ကိုလည်း ပိတ်သွားစေသည်။

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

Child Component ၏ ဖော်ပြချက် (Template) ကို လုပ်ဆောင်ပါမည်။

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 Component ၏ data များကို တည်းဖြတ်ခြင်း လုပ်ဆောင်ချက်ကို အကောင်အထည်ဖော်ပါ။