This keyword binding in Class Component
အပေါ်မှာ ကျတော်တို့ရေးခဲ့တဲ့ functional နဲ့ class component ကို ပြန်ကြည့်လိုက်ရင် function တွေရေး
တဲ့အခါမှာ ၂ မျိုးကွဲနေတာကို မြင်ရလိမ့်မယ်
ဟုတ်ပါတယ် ကျတော် တမင် ခွဲရေးခဲ့တာပါ ဘာလို့လည်းဆိုတော့ this keyword ကြောင့်လေးပါ
အဲဒါကို သိရအောင်လို့ ကျတော် ဒီလိုခွဲရေးပေးခဲ့တာပါ
တကယ်လို့ ကျတော်တို့ က class component ထဲမှာ regular function expression ကို အသုံးပြုချင်တဲ့
အခါကျရင် ကျတော်တို့က this keyword ကို class က ပိုင်တာဖြစ်ကြောင်းသိစေဖို့အတွက် ကျတော်တို့က
binding လုပ်ပေးရပါမယ် ဘာလို့ ဒီလိုလုပ်ရတာလည်းဆိုတော့ class ထဲမှာရှိတဲ့ state / setState ကိုအသုံး
ပြုချင်လို့ပါ မဟုတ်ရင် သူက undefined ဆိုပြီးတော့ error လာပြပါလိမ့်မယ်
အရင်ဆုံး ကျတော်တို့ function တခုကိုရေးလိုက်ကြရအောင်ဗျ
ကျတော်တို့ class component ရဲ့ clickHandler လေးကို ဒီလိုလေး ပြင်လိုက်ပါမယ်
clickHandler () {
this.setState({
count : this.state.count + 1
})
}အဲလိုလေးပြင်ပြီးတော့ ကျတော်တို့က browser မှာ သွားပြီးတော့ စမ်းကြည့်လိုက်တဲ့အခါမှာ error
တက်လာတာကို မြင်ရလိမ့်မယ်ဗျ
အဲလိုမျိုး က ဘာကြောင့်တက်ရတာလည်းဆိုတော့ this ဆိုတဲ့ keyword က regular function ထဲမှာဆိုရင်
သူက အဲဒီ function ကိုပဲ ပြန်ညွှန်းပေးတာကြောင့်မလို့ပါ အဲဒါကြောင့် ကျတော်က arrow function လေးကို
အသုံးပြုပြီးတော့ရေးပြသွားတာပါ
သူ့ကို class က နေပီးတော့ လာတဲ့ state / setState တို့ကို အသုံးပြုချင်တဲ့အတွက် ကျတော်တို့က
ဘယ်လိုမျိုးရေးရမှာလည်းဆိုတော့
constructor function ထဲမှာ ကျတော်တို့က binding လုပ်ပေးရမှာပါ
ဘယ်လိုမျိုးရေးရမှာလည်းဆိုတော့
ဒီလိုလေးရေးပြီးတော့ ကျတော်တို့က binding လုပ်ပေးရမှာပါ
ဒါဆိုရင် ကျတော်တို့ရဲ့ clickHandler ဆိုတဲ့ function လေးက အရင်အတိုင်းအလုပ်လုပ်သွား ပါလိမ့်မယ်ဗျ
ဒီလောက်ဆိုရင်တော့ state တွေရဲ့ကြောင်းကို တော်တော်လေး နားလည်သွားလိမ့်မယ် လို့ထင်ပါတယ်
အပေါ်က ကုဒ်တွေကိုကြည့်ခြင်းအားဖြင့် ကျတော်တို့က ဘာကြောင့်နောက်ပိုင်း ကျရင် functional ကိုပဲ
အသုံးများလာရတာလည်းဆိုတာကိုမြင်သာမယ်ထင်ကြပါတယ်
Last updated