⊗jsrtPmFmsII 56 of 112 menu

Darbas su įvesties laukais React

Darbas su įvesties laukais React vyksta naudojant būsenas. Kiekvienam įvesties laukui priskiriama savo būsena, kurioje yra įvesties lauko value.

Pažiūrėkime pavyzdžiu. Tarkime, kad turime įvesties lauką:

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

Tarkime, kad taip pat turime būseną:

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

Pririškime savo būseną prie įvesties lauko atributo value:

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

Tokiu atveju pasirodys, kad pakeitus būseną, reaktyviai pasikeis ir įvesties lauko tekstas.

Tai, tačiau, suteikia įdomų šalutinį efektą: dabar paleidus kodą naršyklėje, įvesties lauke neįmanoma pakeisti teksto! Kodėl: nes įvedant tekstą į įvesties lauką nekeičiama būsena value, atitinkamai, ir tekstas įvesties lauke neturėtų keistis.

Išbandykite patys. Nukopijuokite mano kodą ir paleiskite pas save. Pabandykite keisti tekstą įvesties lauke - jums nieko nepavyks. Atidarykite naršyklės konsolę - joje pamatysite React įspėjimą. Šis įspėjimas mums nurodo, kad mes pririšome būseną prie įvesties lauko, bet tuo pačiu užblokavome įvesties lauką.

Padarykime taip, kad į mūsų įvesties lauką būtų galima įvesti tekstą. Tam reikia padaryti kad įvedant keistųsi mūsų būsena į dabartinę įvesties lauko reikšmę.

Pirmiausia tam reikia įvesties laukui užkabinti įvykį onChange:

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

Šis įvykis React veikia kitaip palyginti su grynuoju JS. React jis suveikia iškart pasikeitus įvesties laukui. Tai yra kai įvedamas arba ištrinamas simbolis.

Dabar pridėkime mūsų įvykio apdorotoją:

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

Šiame apdorotoje mes turime nuskaityti dabartinį įvesties lauko tekstą ir nustatyti jį į būseną naudojant funkciją setValue.

Problema ta, kad this šios funkcijos nerodys į mūsų įvesties lauką - tai React ypatumas. Kad gautume elementą, kuriame įvyko įvykis, mums reikia naudoti event.target:

function App() { const [value, setValue] = useState('text'); function handleChange(event) { console.log(event.target); // nuoroda į įvesties lauko DOM elementą } return <div> <input value={value} onChange={handleChange} /> </div>; }

Išveskime naudodami event.target dabartinį įvesties lauko tekstą:

function App() { const [value, setValue] = useState('text'); function handleChange(event) { console.log(event.target.value); // dabartinis įvesties lauko tekstas } return <div> <input value={value} onChange={handleChange} /> </div>; }

O dabar įrašykime įvesties lauko tekstą į mūsų būseną:

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

Dabar galėsime įvesti tekstą į įvesties lauką. Tuo metu būsena value visada turės dabartinį įvesties lauko tekstą.

Mes galime lengvai tuo įsitikinti. Išveskime savo teksto turinį į pastraipą. Tokiu atveju įvedant tekstą į įvesties lauką, įvestas tekstas automatiškai pasirodys pastraipoje:

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

Galime perrašyti į kompaktesnį variantą su anonime rodykline funkcija:

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

Taigi, kad bet kuris įvesties laukas veiktų, mums reikia šių dalykų: sukurti šio įvesties lauko būseną, pririšti būseną prie įvesties lauko atributo value, užkabinti įvykį onChange į įvesties lauką, įvykio apdorotoje keisti įvesties lauko būseną į jo tekstą.

Šias operacjas reikės atlikti su kiekvienu įvesties lauku. Tai yra, jei turite du įvesties laukus, tada turėsite dvi būsenas ir dvi funkcijas-įvykių apdorotojas įvykiui onChange.

Sukurkite du įvesties laukus. Tegul pirmojo įvesties lauko tekstas išvedamas į pirmą pastraipą, o antrojo įvesties lauko tekstas - į antrą pastraipą.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti