⊗jsrtPmFmsII 56 of 112 menu

Bemenetek kezelése Reactben

A bemenetek kezelése Reactben állapotok segítségével történik. Minden bemenethez hozzárendelünk egy állapotot, amely tartalmazza a bemenet value értékét.

Nézzünk egy példát. Tegyük fel, hogy van egy bemenetünk:

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

Tegyük fel továbbá, hogy van egy állapotunk:

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

Kössük hozzá az állapotunkat a bemenet value attribútumához:

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

Ebben az esetben az fog történni, hogy az állapot változásakor reaktívan megváltozik a bemenet szövege is.

Ennek azonban van egy érdekes mellékhatása: most, ha a kódot a böngészőben futtatjuk, a bemenetben lehetetlen megváltoztatni a szöveget! Miért: mert amikor szöveget írunk a bemenetbe, nem változik a value állapot, ennek megfelelően a szöveg a bemenetben sem változhat.

Próbáld ki magad. Másold le a kódomat és futtasd nálad. Próbáld megváltoztatni a szöveget a bemenetben - nem fog sikerülni. Nyisd meg a böngésző konzolját - egy React figyelmeztetést fogsz látni benne. Ez a figyelmeztetés arra utal, hogy kötöttünk egy állapotot a bemenethez, de ezzel blokkoltuk a bemenetet.

Tegyük úgy, hogy a bemenetünkbe lehessen szöveget beírni. Ehhez azt kell elérnünk, hogy beíráskor az állapotunk a bemenet aktuális értékére változzon.

Először is ehhez a bemenetre fel kell függesztenünk egy onChange eseményt:

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

Ez az esemény a Reactben másképp viselkedik a tiszta JS-hez képest. A Reactben azonnal elsül a bemenet változásakor. Vagyis egy karakter beírásakor vagy törlésekor.

Most adjuk hozzá az eseményünk kezelőjét:

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

Ebben a kezelőben ki kell olvasnunk a bemenet jelenlegi szövegét és be kell állítanunk az állapotba a setValue függvénnyel.

A probléma az, hogy a függvény this-je nem fog a bemenetünkre mutatni - ez a React sajátossága. Ahhoz, hogy megkapjuk az elemet, amiben az esemény történt, a event.target-et kell használnunk:

function App() { const [value, setValue] = useState('text'); function handleChange(event) { console.log(event.target); // hivatkozás a bemenet DOM elemére } return <div> <input value={value} onChange={handleChange} /> </div>; }

Jelenítsük meg a event.target segítségével a bemenet jelenlegi szövegét:

function App() { const [value, setValue] = useState('text'); function handleChange(event) { console.log(event.target.value); // a bemenet jelenlegi szövege } return <div> <input value={value} onChange={handleChange} /> </div>; }

És most írjuk be a bemenet szövegét az állapotunkba:

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

Most már tudunk szöveget beírni a bemenetbe. Eközben a value állapot mindig tartalmazni fogja a bemenet aktuális szövegét.

Ezt könnyen beláthatjuk. Jelenítsük meg az állapotunk szövegét egy bekezdésben. Ebben az esetben amikor szöveget írunk a bemenetbe, a beírt szöveg automatikusan meg fog jelenni a bekezdésben is:

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

Átírhatjuk egy tömörebb változatra név nélküli nyíl függvénnyel:

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

Tehát bármely bemenet működéséhez a következőkre van szükségünk: létrehozunk egy állapotot a bemenethez, hozzákötjük az állapotot a bemenet value attribútumához, felfüggesztünk egy onChange eseményt a bemenetre, az esemény kezelőjében megváltoztatjuk a bemenet állapotát a szövegére.

Ezeket a műveleteket minden egyes bemenettel el kell végeznünk. Vagyis, ha két bemeneted van, akkor két állapotod és két onChange eseménykezelő függvényed lesz.

Készíts két bemenetet. Az első bemenet szövege jelenjen meg az első bekezdésben, a második bemenet szövege pedig a második bekezdésben.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás