⊗jsrtPmCpEPS 88 of 112 menu

Redaktimi i state-it të prindit në komponentin fëmijë në React

Tani le të redaktojmë produktet tona duke përdorur input-et. Për këtë, në komponentin fëmijë të krijojmë një buton.

Gjë me gjë, në shtypjen e parë të këtij butoni le të shfaqen input-e për redaktimin e tyre në vend të emrit dhe çmimit të produktit, kurse në shtypjen e dytë, në vend të input-eve, të shfaqen përsëri tekstet.

Të bëjmë një ndryshim në array-in me produkte, duke shtuar vetinë isEdit (dhe për thjeshtësi, punën me shportën do ta heqim):

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}, ];

Komponenti Product

Të krijojmë një buton për redaktim në produkt:

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

Të bëjmë që me klikim në këtë buton të thirret një funksion toggleMode, i transmetuar nga komponenti prind:

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

Edhe pse nuk kemi ende implementimin e toggleMode, ne e dimë se ai do të vendoset në komponentin-prind, do të pranojë si parametër id e produktit dhe do të ndryshojë vetinë isEdit të produktit në të kundërtën.

Të bëjmë gjithashtu që teksti i butonit të ndryshojë me çdo shtypje:

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>; }

Tani le të bëjmë që në modalitetin e redaktimit të kemi input-e me të dhënat, kurse në modalitetin normal - span-e:

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>; }

Të lidhim me input-et tona ngjarjen onChange, ku do të thirrim një funksion të caktuar prindëror 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>; }

Komponenti Products

Tani le të kalojmë në komponentin Products. Të implementojmë në të funksionin toggleMode:

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

Gjithashtu të implementojmë në të funksionin editProd:

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

Në tag-un e produktit si atribute t'ia transmetojmë funksionet tona toggleMode dhe 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} />; });

Kodi përfundimtar i komponentit Products do të jetë si më poshtë:

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>; }

Detyra praktike

Përsëritni operacione të ngjashme me komponentët Users dhe User, të krijuar nga ju në mësimet e mëparshme.

Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo