⊗jsrtPmFmsAIB 70 of 112 menu

Binding Input ke Array di React

Misalkan dalam state notes disimpan sebuah array:

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

Misalkan kita juga memiliki fungsi pembantu, yang mencari jumlah elemen array:

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

Mari kita cari dan tampilkan jumlah elemen array kita dari state, dengan menggunakan fungsi pembantu kita untuk ini:

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

Sekarang mari kita buat tiga input dan di value setiap input, tulis salah satu elemen array:

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

Sekarang mari kita tambahkan event onChange ke input kita. Pada saat yang sama, kita buat satu fungsi penangan umum untuk event ini:

function App() { const [notes, setNotes] = useState([1, 2, 3]); function changeHandler(index, event) { // fungsi penangan umum } 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>; }

Seperti yang Anda lihat, fungsi changeHandler pada parameter pertama menerima nomor elemen array yang diedit oleh input ini.

Berdasarkan nomor ini, kita dapat mengganti elemen array dengan konten input.

Mari kita lakukan ini:

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

Sekarang kita dapat mengedit input mana pun, dan array akan berubah secara reaktif dan, karenanya, jumlah elemennya akan dihitung ulang.

Mari kita kumpulkan semua kode kita bersama:

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

Dapat dibuat agar input dibentuk dalam sebuah loop:

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

Diberikan array berikut:

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

Tampilkan rata-rata aritmatika elemen array ini di layar. Dalam sebuah loop, buat input untuk mengedit elemen.

Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak