⊗jsrtPmFmsII 56 of 112 menu

Werk met Inputs in React

Werk met inputs in React geskied met behulp van state. Aan elke input word sy eie state toegewys, wat die value van die input bevat.

Kom ons kyk na 'n voorbeeld. Gestel ons het 'n input:

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

Gestel ons het ook 'n state:

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

Kom ons bind ons state aan die value attribuut van die input:

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

In hierdie geval sal dit beteken dat wanneer die state verander, sal die input se teks reaktief verander.

Dit gee egter 'n interessante newe-effek: nou, wanneer die kode in die blaaier uitgevoer word, is dit onmoontlik om die teks in die input te verander! Hoekom: omdat wanneer teks in die input ingevoer word, verander die state value nie, en gevolglik moet die teks in die input ook nie verander nie.

Probeer self. Kopieer my kode en voer dit uit by jou. Probeer om die teks in die input te verander - jy sal niks kan doen nie. Maak die blaaier se konsool oop - jy sal 'n waarskuwing van React daarin sien. Hierdie waarskuwing wys vir ons dat ons state aan die input gebind het, maar sodoende die input geblokkeer het.

Kom ons sorg dat ons teks in ons input kan invoer. Om dit te doen, moet ons maak sodat wanneer ingevoer word, ons state verander na die huidige waarde van die input.

Om mee te begin, moet ons op die input die gebeurtenis onChange plaas:

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

Hierdie gebeurtenis in React gedra hom anders in vergelyking met suiwer JS. In React vind dit plaas dadelik wanneer die input verander. Dit wil sê wanneer 'n karaktor ingevoer of verwyder word.

Kom ons voeg nou ons gebeurtenishanter by:

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

In hierdie hanterer moet ons die huidige teks van die input lees en dit in die state plaas met behulp van die funksie setValue.

Die probleem is dat this van hierdie funksie nie na ons input sal wys nie - dit is 'n eienskappy van React. Om die element te kry waarin die gebeurtenis plaasgevind het, moet ons event.target gebruik:

function App() { const [value, setValue] = useState('text'); function handleChange(event) { console.log(event.target); // verwysing na die DOM element van die input } return <div> <input value={value} onChange={handleChange} /> </div>; }

Kom ons toon die huidige teks van die input met behulp van event.target:

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

En nou skryf ons die teks van die input in ons state:

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

Nou kan ons teks in die input invoer. Met dit sal die state value altyd die huidige teks van die input bevat.

Ons kan maklik hiervan oortuig word. Laat ons die inhoud van ons teks in 'n paragraaf toon. In hierdie geval, wanneer teks in die input ingevoer word, sal die ingevoerde teks outomaties in die paragraaf verskyn:

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

Ons kan dit herskryf na 'n meer kompakte weergawe met 'n anonieme pylfunksie:

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

Dus, vir die werking van enige input het ons die volgende nodig: skep 'n state vir daardie input, bind die state aan die value attribuut van die input, plaas die gebeurtenis onChange op die input, en in die gebeurtenishanter, verander die state van die input na sy teks.

Hierdie operasies sal met elke input uitgevoer moet word. Dit wil sê, as jy twee inputs het, dan sal jy twee state en twee gebeurtenishanterfunksies vir die gebeurtenis onChange hê.

Maak twee inputs. Laat die teks van die eerste input in die eerste paragraaf vertoon word, en die teks van die tweede input - in die tweede paragraaf.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp