⊗jsrtPmHkURf 12 of 47 menu

React တွင် Refs များနှင့်အလုပ်လုပ်ရန် useRef Hook

ဤသင်ခန်းစာတွင် ကျွန်ုပ်တို့သည် refs များနှင့် အလုပ်လုပ်ပါမည်။ ရှင်းလင်းစေရန် hook <useRef ၏အလုပ်လုပ်ပုံကို hook <useState နှင့် နှိုင်းယှဉ်၍ ကြည့်ကြပါစို့။

ခလုတ်တစ်ခုပါဝင်သည့် component တစ်ခုကို ဖန်တီးကြပါစို့။

return ( <div> <button> state click </button> </div> );

Component အတွင်းသို့ <useState ကို import လုပ်ပါမည်။

import { useState } from 'react';

ပြီးနောက် state <state ကို သတ်မှတ်ပါမည်။

const [state, setState] = useState(0);

ယခု ကျွန်ုပ်တို့သည် ခလုတ်ကိုနှိပ်လိုက်သောအခါတွင် ကျွန်ုပ်တို့၏ <state သည် <1 တိုးသွားစေမည်။ State ၏တန်ဖိုးကို ခလုတ်ပေါ်ရှိစာသားထဲတွင် တိုက်ရိုက်ထုတ်ပြပါမည်။

<button onClick={handleStateClick}> state click: {state} </button>

ခလုတ်ကိုနှိပ်ခြင်းကို ကိုင်တွယ်ရန် function <handleStateClick ကို ဖော်ပြပါမည်။

function handleStateClick() { setState(state + 1); }

ခလုတ်ကို နှိပ်ကြည့်ပါက state ၏တန်ဖိုး မည်သို့တိုးလာသည်ကို မြင်ရပါမည်။

ယခု state ကိုအသုံးမပြုဘဲ ref ကိုအသုံးပြု၍ component <App ကို ဖန်တီးကြည့်ကြပါစို့။

ပထမဦးစွာ၊ component အတွင်းသို့ <useRef ကို import လုပ်ပါမည်။

import { useRef } from 'react';

ပြီးနောက် ref <ref ကို သတ်မှတ်ပါမည်။ Hook <useRef သည် <current ဟူသော property တစ်ခုတည်းသာရှိသည့် ref object တစ်ခုကို ပြန်ပေးပြီး ၎င်းသည် နောက်ပိုင်းတွင် ကျွန်ုပ်တို့စိတ်ဝင်စားမည့်အရာဖြစ်သည်။ ၎င်း၏ကနဦးတန်ဖိုးကို <0 သတ်မှတ်ပါမည်။

const ref = useRef(0);

ခလုတ်ပေါ်သို့ နှိပ်ခြင်းအတွက် event handler တစ်ခုထည့်ပါမည်။ <ref ကိုယ်တိုင်ကို ဖတ်ခြင်း/ပြောင်းလဲခြင်းမဟုတ်ဘဲ ၎င်း၏ property <current ကိုသာဖတ်ရန်/ပြောင်းလဲရန် လိုအပ်သည်ကို သတိရပါ။

<button onClick={handleRefClick}> ref click: {ref.current} </button>

ကျွန်ုပ်တို့၏ခလုတ်ကိုနှိပ်ခြင်းအတွက် event handler function ကို ထည့်ပါမည်။ ဤနေရာတွင် state ဖြင့်ပြထားသောဥပမာကဲ့သို့ပင် <current ကို <1 တိုးပါမည်။ ၎င်း၏တန်ဖိုးကိုပြောင်းလဲရန် <setState function လိုအပ်သည့် state နှင့်မတူဘဲ၊ ref ၏ property နှင့်အတူ ကျွန်ုပ်တို့သည် တိုက်ရိုက်အလုပ်လုပ်ပါသည်။

function handleRefClick() { ref.current = ref.current + 1; }

ယခု ကျွန်ုပ်တို့၏ခလုတ်ကို နှိပ်ကြည့်ပါ။ ကျွန်ုပ်တို့ ဘာတွေမြင်ရသနည်း။ ၎င်းကိုနှိပ်သောအခါ၊ အစက <0 ဖြစ်ခဲ့သကဲ့သို့ပင် ပြောင်းလဲမသွားပါ။

တန်ဖိုးပြောင်းလဲခြင်းရှိမရှိ သံသယဝင်စရာဖြစ်လာနိုင်ပါသည်။ ကျွန်ုပ်တို့စစ်ဆေးကြည့်ကြပါစို့။ ဤအတွက် event handler function ထဲတွင် <current ၏တန်ဖိုးကို console တွင် ထုတ်ပြသည့် code စာကြောင်းတစ်ခုထပ်ထည့်ပါမည်။

function handleRefClick() { ref.current = ref.current + 1; console.log('ref click: ' + ref.current); }

ယခု၊ browser ထဲရှိ console ကိုဖွင့်ကာ ခလုတ်ကိုထပ်မံနှိပ်ပြီး တန်ဖိုးသည် တကယ်ပင် နှိပ်သည့်အကြိမ်တိုင်းတွင် ပြောင်းလဲနေပြီး လှည့်စားမှုမရှိကြောင်း သေချာစေပါမည်။

ယခုကျွန်ုပ်တို့မြင်ရသည့်အတိုင်း state နှင့်မတူဘဲ၊ ref ၏တန်ဖိုးပြောင်းလဲခြင်းသည် component ၏ re-render ကို မဖြစ်စေပါ။ ထို့ကြောင့် ခလုတ်ပေါ်ရှိစာသားထဲတွင် ကနဦးတန်ဖိုး <0 ကိုသာ အကြိမ်တိုင်းမြင်ရခြင်းဖြစ်သည်။

ထို့ကြောင့်၊ သင့်ဒေတာများကို render လုပ်ရန်အသုံးပြုပါက ၎င်းတို့ကို state ထဲတွင်သိမ်းထားပါ။ သင်သည် re-render မလိုအပ်ပါက၊ ထိုသို့သောအခြေအနေတွင် refs များကိုအသုံးပြုခြင်းသည် ပို၍ထိရောက်မှုရှိနိုင်သည်။

သင့် component တွင် စာသား <'text' ပါဝင်သည့် စာပိုဒ်တစ်ခုနှင့် ခလုတ်တစ်ခုရှိသည်ဆိုပါစို့။ ခလုတ်ကိုနှိပ်သည့်အကြိမ်တိုင်းတွင် စာပိုဒ်၏အဆုံးသို့ အာမေဋိတ်အမှတ် (!) ပေါင်းထည့်သွားစေရန် ပြုလုပ်ပါ။ State ကိုအသုံးပြု၍ ပြုလုပ်ပါ။

Component <App ကို ဖန်တီးပါ၊ သို့သော်ယခုအခါ state အစား ref ကိုအသုံးပြုပါ။ ခလုတ်ကိုနှိပ်သောအခါ စာပိုဒ်၏စာသားမပြောင်းလဲကြောင်း သေချာပါစေ။ စာပိုဒ်၏စာသားကို console တွင်ထုတ်ပြခြင်းကိုလည်း ထည့်ပါ၊ ၎င်းကိုဖွင့်ကာ စာသားအမှန်တကယ်ပြောင်းလဲကြောင်း သေချာပါစေ။

မြန်မာ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ဝက်ဘ်ဆိုက် လုပ်ဆောင်ခြင်း၊ ဆန်းစစ်လေ့လာခြင်းနှင့် ပုဂ္ဂလိကပြုပြင်ခြင်းအတွက် ကျွန်ုပ်တို့သည် cookie များကို အသုံးပြုပါသည်။ ဒေတာများကို ပြုပြင်ခြင်းသည် ကိုယ်ရေးကိုယ်တာ မူဝါဒအတိုင်း ဖြစ်ပါသည်။
အားလုံးလက်ခံရန် ပြင်ဆင်ရန် ငြင်းပယ်ရန်