⊗jsrtPmFmsII 56 of 112 menu

Pengendalian Input dalam React

Pengendalian input dalam React dilakukan dengan menggunakan state. Setiap input diberikan state tersendiri, yang mengandungi value input tersebut.

Mari kita lihat contoh. Katakan kita mempunyai satu input:

function App() { return <div> <input /> </div>; }

Katakan juga kita mempunyai state:

function App() { const [value, setValue] = useState('teks'); return <div> <input /> </div>; }

Mari kita ikat state kita kepada atribut value input:

function App() { const [value, setValue] = useState('teks'); return <div> <input value={value} /> </div>; }

Dalam kes ini, hasilnya ialah apabila state berubah, teks input akan berubah secara reaktif.

Walau bagaimanapun, ini memberikan kesan sampingan yang menarik: sekarang, apabila kod dijalankan dalam pelayar, adalah mustahil untuk menukar teks dalam input! Mengapa: kerana apabila teks dimasukkan ke dalam input, state value tidak berubah, oleh itu, teks dalam input tidak sepatutnya berubah.

Cubalah sendiri. Salin kod saya dan jalankannya di tempat anda. Cuba ubah teks dalam input - anda tidak akan berjaya. Buka konsol pelayar - anda akan melihat amaran dari React di dalamnya. Amaran ini menunjukkan kepada kita bahawa kita telah mengikat state kepada input, tetapi dengan itu menyekat input.

Mari kita buat supaya kita boleh memasukkan teks ke dalam input kita. Untuk ini, kita perlu memastikan bahawa apabila input berubah, state kita turut berubah kepada nilai semasa input.

Sebagai permulaan, kita perlu meletakkan event onChange pada input:

function App() { const [value, setValue] = useState('teks'); return <div> <input value={value} onChange={handleChange} /> </div>; }

Event ini dalam React berkelakuan berbeza berbanding dengan JS tulen. Dalam React, ia terpicu serta-merta apabila input berubah. Iaitu apabila aksara dimasukkan atau dipadam.

Sekarang mari kita tambah pengendali untuk event kita:

function App() { const [value, setValue] = useState('teks'); function handleChange() { } return <div> <input value={value} onChange={handleChange} /> </div>; }

Dalam pengendali ini, kita perlu membaca teks semasa input dan menetapkannya ke dalam state menggunakan fungsi setValue.

Masalahnya ialah this untuk fungsi ini tidak akan merujuk kepada input kita - itulah ciri React. Untuk mendapatkan elemen di mana event berlaku, kita perlu menggunakan event.target:

function App() { const [value, setValue] = useState('teks'); function handleChange(event) { console.log(event.target); // rujukan kepada elemen DOM input } return <div> <input value={value} onChange={handleChange} /> </div>; }

Mari kita keluarkan teks semasa input menggunakan event.target:

function App() { const [value, setValue] = useState('teks'); function handleChange(event) { console.log(event.target.value); // teks semasa input } return <div> <input value={value} onChange={handleChange} /> </div>; }

Dan sekarang mari kita tulis teks input ke dalam state kita:

function App() { const [value, setValue] = useState('teks'); function handleChange(event) { setValue(event.target.value); } return <div> <input value={value} onChange={handleChange} /> </div>; }

Sekarang kita boleh memasukkan teks ke dalam input. Pada masa yang sama, state value akan sentiasa mengandungi teks semasa input.

Kita boleh membuktikannya dengan mudah. Mari kita keluarkan kandungan teks kita ke dalam perenggan. Dalam kes ini, apabila teks dimasukkan ke dalam input, teks yang dimasukkan akan muncul secara automatik dalam perenggan:

function App() { const [value, setValue] = useState(''); function handleChange(event) { setValue(event.target.value); } return <div> <input value={value} onChange={handleChange} /> <p>teks: {value}</p> </div>; }

Kita boleh menulis semula kepada versi yang lebih ringkas dengan fungsi anak panah tanpa nama:

function App() { const [value, setValue] = useState(''); return <div> <input value={value} onChange={event => setValue(event.target.value)} /> <p>teks: {value}</p> </div>; }

Oleh itu, untuk mana-mana input berfungsi, kita perlu yang berikut: buat state untuk input tersebut, ikat state kepada atribut value input, letakkan event onChange pada input, dalam pengendali event, ubah state input kepada teksnya.

Operasi ini perlu dilakukan untuk setiap input. Iaitu, jika anda mempunyai dua input, maka anda akan mempunyai dua state dan dua fungsi pengendali event onChange.

Buat dua input. Biarkan teks input pertama dikeluarkan dalam perenggan pertama, dan teks input kedua - dalam perenggan kedua.

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