⊗jsrtPmCpEPS 88 of 112 menu

React တွင် မိဘ component ၏ state ကို ကလေး component မှ တည်းဖြတ်ခြင်း

ယခုကျွန်ုပ်တို့၏ ထုတ်ကုန်များကို input များဖြင့် တည်းဖြတ်ကြပါစို့။ ဤအတွက် ကလေး component ထဲတွင် ခလုတ်တစ်ခု ပြုလုပ်ကြမည်။

ဤခလုတ်ကို ပထမအကြိမ်နှိပ်လိုက်သည့်အခါ ထုတ်ကုန်နှင့်အတူ အမည်နှင့် စျေးနှုန်းအစား ၎င်းတို့ကို တည်းဖြတ်ရန် input များ ပေါ်လာပါစေ၊ ဒုတိယအကြိမ်နှိပ်လိုက်သည့်အခါမှာမှ input များအစား စာသားများ ပြန်ပေါ်လာပါစေ။

ထုတ်ကုန်များပါဝင်သော array ထဲသို့ ပြောင်းလဲမှုတစ်ခု ထည့်သွင်းကြမည်၊ isEdit ဂုဏ်သတ္တိတစ်ခု ထည့်ခြင်း (ပြီးလျှင် ရိုးရှင်းစေရန် ဈေးခြင်းလှည်းနှင့် အလုပ်ကို ဖယ်ရှားလိုက်ခြင်း):

const initProds = [ {id: id(), name: 'product1', cost: 100, isEdit: false}, {id: id(), name: 'product2', cost: 200, isEdit: false}, {id: id(), name: 'product3', cost: 300, isEdit: false}, ];

Product Component

ထုတ်ကုန်တွင် တည်းဖြတ်ရန် ခလုတ်တစ်ခု ပြုလုပ်ကြမည်:

function Product({ id, name, cost, isEdit }) { return <div> name: <span>{name}</span> cost: <span>{cost}</span> <button>edit</button> </div>; }

ဤခလုတ်ကို နှိပ်လိုက်သည့်အခါ မိဘ component မှ လာသော toggleMode လုပ်ဆောင်ချက်တစ်ခုခု ခေါ်ယူလိမ့်မည်ဟု ပြုလုပ်ကြပါစို့:

function Product({ id, name, cost, isEdit, toggleMode }) { return <div> name: <span>{name}</span> cost: <span>{cost}</span> <button onClick={() => toggleMode(id)}> edit </button> </div>; }

ကျွန်ုပ်တို့တွင် toggleMode အကောင်အထည်ဖော်မှု မရှိသေးသော်လည်း၊ ၎င်းသည် မိဘ component ထဲတွင်တည်ရှိမည်၊ သတ်မှတ်ပြောင်းလဲမှုအရ ထုတ်ကုန်၏ id ကိုလက်ခံမည်နှင့် isEdit ထုတ်ကုန်၏ဂုဏ်သတ္တိကို ဆန့်ကျင်ဘက်အဖြစ်သို့ ပြောင်းလဲမည်ဟု သိထားသည်။

ခလုတ်၏စာသားသည် နှိပ်သမျှအကြိမ်တိုင်း ပြောင်းလဲသွားစေရန်လည်း ပြုလုပ်ကြမည်:

function Product({ id, name, cost, isEdit, toggleMode }) { return <div> name: <span>{name}</span> cost: <span>{cost}</span> <button onClick={() => toggleMode(id)}> {isEdit ? 'save': 'edit'} </button> </div>; }

ယခု တည်းဖြတ်မှုမုဒ်တွင် ကျွန်ုပ်တို့တွင် ဒေတာများနှင့် input များရှိပြီး သာမန်မုဒ်တွင် span များရှိစေရန် ပြုလုပ်ကြပါစို့:

function Product({ id, name, cost, isEdit, toggleMode }) { return <div> name: {isEdit ? <input value={name} /> : <span>{name}</span>} cost: {isEdit ? <input value={cost} /> : <span>{cost}</span>} <button onClick={() => toggleMode(id)}> {isEdit ? 'save': 'edit'} </button> </div>; }

ကျွန်ုပ်တို့၏ input များအား onChange အဖြစ်အပျက်သို့ ချိတ်ဆက်ကြမည်၊ ထို့အတွင်း မိဘဆိုင်ရာ လုပ်ဆောင်ချက်တစ်ခုခု editProd ကို ခေါ်ယူမည်:

function Product({ id, name, cost, isEdit, toggleMode, editProd }) { return <div> name: { isEdit ? <input value={name} onChange={event => editProd(id, 'name', event)} /> : <span>{ name }</span> } cost: { isEdit ? <input value={cost} onChange={event => editProd(id, 'cost', event)} /> : <span>{ cost }</span> } <button onClick={() => toggleMode(id)}> {isEdit ? 'save': 'edit'} </button> </div>; }

Products Component

ယခု Products component ထဲသို့ ကူးပြောင်းကြပါစို့။ ၎င်းထဲတွင် toggleMode လုပ်ဆောင်ချက်ကို အကောင်အထည်ဖော်ကြမည်:

function toggleMode(id) { setProds(prods.map(prod => { if (prod.id === id) { prod.isEdit = !prod.isEdit; } return prod; })); }

၎င်းထဲတွင် editProd လုပ်ဆောင်ချက်ကိုလည်း အကောင်အထည်ဖော်ကြမည်:

function editProd(id, field, event) { setProds(prods.map(prod => { if (prod.id === id) { prod[field] = event.target.value; } return prod; })); }

ထုတ်ကုန်ပါဝင်သော tag ထဲသို့ ကျွန်ုပ်တို့၏ လုပ်ဆောင်ချက်များ toggleMode နှင့် editProd ကို �ုဏ်သတ္တိများအဖြစ် လွှဲပြောင်းပေးကြမည်:

const items = prods.map(prod => { return <Product key ={prod.id} id ={prod.id} name={prod.name} cost={prod.cost} isEdit={prod.isEdit} toggleMode={toggleMode} editProd={editProd} />; });

Products component ၏ နောက်ဆုံးကုဒ်သည် �ောက်ပါအတိုင်း ဖြစ်လာမည်:

function Products() { const [prods, setProds] = useState(initProds); function toggleMode(id) { setProds(prods.map(prod => { if (prod.id === id) { prod.isEdit = !prod.isEdit; } return prod; })); } function editProd(id, field, event) { setProds(prods.map(prod => { if (prod.id === id) { prod[field] = event.target.value; } return prod; })); } const result = prods.map(prod => { return <Product key ={prod.id} id ={prod.id} name={prod.name} cost={prod.cost} isEdit={prod.isEdit} toggleMode={toggleMode} editProd={editProd} />; }); return <div> {result} </div>; }

လက်တွေ့လေ့ကျင့်ခန်းများ

သင်၏ယခင်သင်ခန်းစာများတွင် ဖန်တီးခဲ့သော Users နှင့် User component များနှင့် တူညီသောလုပ်ဆောင်ချက်များကို လုပ်ဆောင်ပါ။

မြန်မာ
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 များကို အသုံးပြုပါသည်။ ဒေတာများကို ပြုပြင်ခြင်းသည် ကိုယ်ရေးကိုယ်တာ မူဝါဒအတိုင်း ဖြစ်ပါသည်။
အားလုံးလက်ခံရန် ပြင်ဆင်ရန် ငြင်းပယ်ရန်