Vue တွင် Component ၏ Data များကို Reactive အပြောင်းအလဲလုပ်ခြင်း
ယခု ကျွန်ုပ်တို့၏ Child Component များ၏ data များကို တည်းဖြတ်ခြင်း လုပ်ဆောင်ချက်ကို
အကောင်အထည်ဖော်ကြပါစို့။
အစတွင် Parent Component ထဲတွင် User ၏ id အတိုင်း
ပြောင်းလဲရန် method တစ်ခုကို လုပ်ဆောင်ပါမည်။
methods: {
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 ဖြင့် ဖန်တီးပါမည်။
<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 ကို သတ်မှတ်ပါမည်။
props: {
id: Number,
name: String,
surn: String,
},
emits: ['change'],
ယခု Child Component ထဲတွင် Component ၏ Mode ကို သတ်မှတ်ပေးမည့် property တစ်ခုကို လုပ်ဆောင်ပါမည်။ ၎င်းသည် ပြသခြင်း သို့မဟုတ် တည်းဖြတ်ခြင်း ဖြစ်သည်။
data() {
return {
isEdit: false,
}
}
တည်းဖြတ်ခြင်းအတွက် input များ၏ အလုပ်လုပ်ဆောင်မှုကို ပံ့ပိုးပေးမည့် property များကိုလည်း လုပ်ဆောင်ပါမည်။
data() {
return {
isEdit: false,
newName: '',
newSurn: '',
}
}
ထို property များ၏ ကနဦးတန်ဖိုးများကို props မှ ရယူသွားအောင် လုပ်ဆောင်ပါမည်။
data() {
return {
isEdit: false,
newName: this.name,
newSurn: this.surn,
}
}
တည်းဖြတ်ခြင်း Mode ကို စတင်မည့် method တစ်ခုကို လုပ်ဆောင်ပါမည်။
methods: {
edit() {
this.isEdit = true;
}
}
တည်းဖြတ်ထားသော data များကို သိမ်းဆည်းမည့် method တစ်ခုကို လုပ်ဆောင်ပါမည်။ ၎င်းသည် တည်းဖြတ်ခြင်း Mode ကိုလည်း ပိတ်သွားစေသည်။
methods: {
save() {
this.isEdit = false;
this.$emit('change', this.id, this.newName, this.newSurn);
}
}
Child Component ၏ ဖော်ပြချက် (Template) ကို လုပ်ဆောင်ပါမည်။
<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>
Employee Component ၏ data များကို တည်းဖြတ်ခြင်း
လုပ်ဆောင်ချက်ကို အကောင်အထည်ဖော်ပါ။