⊗jsrtPmHkURD 13 of 47 menu

A useRef hook alkalmazása DOM-hoz Reactben

Az egyik korábbi órán említettük, hogy a ref-eket leggyakrabban DOM elemek elérésére használják.

A ref-ek akkor jönnek jól, amikor például egy elemre kell fókuszálni, görgetni kell, vagy ki kell számolni a méreteit és pozícióját, esetleg ki kell használni valamilyen metódusát vagy tulajdonságát, hiszen az ilyen dolgokhoz a Reactben nincsenek beépített metódusok.

Nézzük meg egy input mező példáján, hogyan is történik ez. Hozzunk létre egy komponenst input mezővel és egy gombbal:

return ( <div> <input /> <button>focus</button> </div> );

Először is importáljuk a komponensbe a useRef-et:

import { useRef } from 'react';

És hozzunk létre egy ref ref-et a komponensben. Inicializáljuk null értékkel:

const ref = useRef(null);

Adjunk a gombra egy kattintás kezelőt:

<button onClick={handleClick}>focus</button>

Ahhoz, hogy hozzáférjünk az input mezőhöz, írjuk bele a ref-ünket ref az input ref attribútumába. Így amikor a React létrehozza ennek az inputnak a DOM csomópontját, egy referenciát rá fog helyezni a ref.current-be, és mi használhatjuk az input metódusait:

<input ref={ref} />

Végül pedig adjuk hozzá a kattintás kezelő függvényt, hogy a gombra kattintva az input mezőre kerüljön a fókusz. Most már megtehetjük ezt a ref-en keresztül, amelyben az input mezőnkre mutató referencia található, ha hozzáférünk a focus metódusához:

function handleClick() { ref.current.focus(); }

Kattintgass a gombon és győződj meg róla, hogy az input mezőre kerül a fókusz.

Vedd a App komponens kódját, amit ezen az órán írtunk, és tedd úgy, hogy a gombra kattintva az input mezőn a fókusz beállításon kívül a beviteli mező tartalma is törlődjon. Ehhez használd az input value tulajdonságát.

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