⊗jsrtPmFmsAIB 70 of 112 menu

Bemenetek kötése tömbhöz Reactben

Tegyük fel, hogy a notes állapotban egy tömb található:

function App() { const [notes, setNotes] = useState([1, 2, 3]); return <div> </div>; }

Tegyük fel, hogy van egy segédfüggvényünk is, ami a tömb elemeinek összegét keresi meg:

function getSum(arr) { let sum = 0; for (const elem of arr) { sum += +elem; } return sum; } function App() { ... }

Keressük meg és jelenítsük meg a tömb elemeinek összegét az állapotunkból, felhasználva ehhez a segédfüggvényünket:

function App() { const [notes, setNotes] = useState([1, 2, 3]); return <div> {getSum(notes)} </div>; }

Most készítsünk három bemenetet, és a value mindegyik bemenetbe írjunk be egy elemet a tömbből:

function App() { const [notes, setNotes] = useState([1, 2, 3]); return <div> <input value={notes[0]} /> <input value={notes[1]} /> <input value={notes[2]} /> {getSum(notes)} </div>; }

Most adjuk hozzá a onChange eseményt a bemeneteinkhez. Ezzel együtt készítsünk egy közös kezelőfüggvényt ehhez az eseményhez:

function App() { const [notes, setNotes] = useState([1, 2, 3]); function changeHandler(index, event) { // közös kezelőfüggvény } return <div> <input value={notes[0]} onChange={event => changeHandler(0, event)} /> <input value={notes[1]} onChange={event => changeHandler(1, event)} /> <input value={notes[2]} onChange={event => changeHandler(2, event)} /> {getSum(notes)} </div>; }

Amint látod, a changeHandler függvény első paraméterként azt a számot kapja meg, hogy a tömb hányadik elemét szerkeszti az adott bemenet.

Ezen szám alapján le tudjuk cserélni a tömb elemét a bemenet tartalmára.

Végezzük ezt el:

function changeHandler(index, event) { setNotes([...notes.slice(0, index), event.target.value, ...notes.slice(index + 1)]); }

Most már bármelyik bemenetet szerkeszthetjük, eközben reaktívan megváltozik a tömb, és ennek megfelelően újraszámolódik az elemeinek összege.

Gyűjtsük össze az összes kódunkat:

function App() { const [notes, setNotes] = useState([1, 2, 3]); function changeHandler(index, event) { setNotes([...notes.slice(0, index), event.target.value, ...notes.slice(index + 1)]); } return <div> <input value={notes[0]} onChange={event => changeHandler(0, event)} /> <input value={notes[1]} onChange={event => changeHandler(1, event)} /> <input value={notes[2]} onChange={event => changeHandler(2, event)} /> {getSum(notes)} </div>; }

Megtehetjük, hogy a bemenetek ciklusban jöjjenek létre:

function App() { const [notes, setNotes] = useState([1, 2, 3]); function changeHandler(index, event) { setNotes([...notes.slice(0, index), event.target.value, ...notes.slice(index + 1)]); } const result = notes.map((note, index) => { return <input key={index} value={note} onChange={event => changeHandler(index, event)} />; }); return <div> {result} {getSum(notes)} </div>; }

Adott a következő tömb:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Jelenítsd meg a képernyőn a tömb elemeinek számtani közepét. Ciklusban készíts bemeneteket az elemek szerkesztéséhez.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás