⊗jsrtPmFmsII 56 of 112 menu

Darbība ar input elementiem React

Darbība ar input elementiem React notiek ar stāvokļu palīdzību. Katram input elementam tiek piešķirts savs stāvoklis, kas satur input elementa value.

Apskatīsim piemērā. Pieņemsim, ka mums ir input elements:

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

Pieņemsim arī, ka mums ir stāvoklis:

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

Piesēsim mūsu stāvokli pie input elementa value atribūta:

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

Šajā gadījumā izrādīsies, ka mainoties stāvoklim, reaktīvi mainīsies arī input elementa teksts.

Tomēr tas rada interesantu blakusefektu: tagad, palaižot kodu pārlūkprogrammā, input elementā nav iespējams mainīt tekstu! Kāpēc: tāpēc ka, ievadot tekstu input elementā, nemainās stāvoklis value, attiecīgi, teksts input elementā nevajadzētu mainīties.

Izmēģiniet pats. Nokopējiet manu kodu un palaidiet sevim. Mēģiniet mainīt tekstu input elementā - jums nekas neizdosies. Atveriet pārlūkprogrammas konsole - jūs tajā redzēsiet brīdinājumu no React. Šis brīdinājums norāda mums, ka mēs esam piesaistījuši stāvokli input elementam, bet tādējādi esam bloķējuši input elementu.

Padarīsim tā, lai mūsu input elementā varētu ievadīt tekstu. Lai to izdarītu, ir jāpanāk, lai, ievadot, mūsu stāvoklis mainītos uz input elementa pašreizējo vērtību.

Vispirms tam ir jāpievieno input elementam notikums onChange:

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

Šis notikums React uzvedas citādi salīdzinājumā ar tīro JS. React tas iedarbojas tūlīt pēc input elementa izmaiņām. Tas ir, ievadot vai dzēšot simbolu.

Tagad pievienosim mūsu notikuma apstrādātāju:

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

Šajā apstrādātājā mums ir jānolasa pašreizējais input elementa teksts un jāiestata tas stāvoklī, izmantojot funkciju setValue.

Problēma ir tā, ka this šajā funkcijā nerādīs uz mūsu input elementu - tāda ir React īpatnība. Lai iegūtu elementu, kurā notika notikums, mums ir jāizmanto event.target:

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

Izvadīsim ar event.target palīdzību pašreizējo input elementa tekstu:

function App() { const [value, setValue] = useState('text'); function handleChange(event) { console.log(event.target.value); // pašreizējais input elementa teksts } return <div> <input value={value} onChange={handleChange} /> </div>; }

Un tagad ierakstīsim input elementa tekstu mūsu stāvoklī:

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

Tagad mēs varēsim ievadīt tekstu input elementā. Šajā gadījumā stāvoklis value vienmēr saturēs input elementa pašreizējo tekstu.

Mēs to varam viegli pārbaudīt. Izvadīsim mūsu teksta saturu rindkopā. Šajā gadījumā, ievadot tekstu input elementā, ievadītais teksts automātiski parādīsies rindkopā:

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

Varam pārrakstīt uz kompaktāku variantu ar anonīmu bultiņu funkciju:

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

Tādējādi, lai jebkurš input elements darbotos, mums vajag sekojošo: izveidot stāvokli šim input elementam, piesaistīt stāvokli input elementa value atribūtam, pievienot notikumu onChange input elementam, notikuma apstrādātājā mainīt input elementa stāvokli uz tā tekstu.

Šīs darbības būs jāveic ar katru input elementu. Tas ir, ja jums ir divi input elementi, tad jums būs divi stāvokļi un divas notikuma onChange apstrādātāja funkcijas.

Izveidojiet divus input elementus. Ļaujiet, lai pirmā input elementa teksts tiktu izvadīts pirmajā rindkopā, bet otrā input elementa teksts - otrajā rindkopā.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt