⊗jsrtPmHkURD 13 of 47 menu

Uporaba hooka useRef za DOM v Reactu

V eni od prejšnjih lekcij smo omenili, da se refi najpogosteje uporabljajo za dostop do DOM elementov.

Refi bodo prišli na pomoč takrat, ko boste, na primer, želeli fokusirati element, narediti scroll ali izračunati njegovo velikost in pozicijo, ali morda izkoristiti nekatere njegove metode ali lastnosti, saj za takšne stvari v Reactu ni vgrajenih metod.

Poglejmo si na primeru z inputom, kako se to naredi. Ustvarimo komponento z inputom in gumbom:

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

Za začetek, importirajmo v komponento useRef:

import { useRef } from 'react';

In ustvarimo ref ref v komponenti. Inicializirajmo ga z vrednostjo null:

const ref = useRef(null);

Dodajmo gumbu obravnavo klika:

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

Da bomo imeli dostop do inputa, zapišimo naš ref ref v atribut ref inputa. Na ta način, ko bo React ustvarjal DOM vozlišče za ta input, bo postavil povezavo nanj v ref.current in mi bomo lahko uporabljali metode inputa:

<input ref={ref} />

In končno, dodajmo funkcijo za obravnavo klika, da se ob kliku na gumb, na input postavi fokus. Zdaj lahko to naredimo preko refa, v katerem je povezava na naš input, z dostopom do njegove metode focus:

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

Klikajte na gumb in se prepričajte, da se na input postavi fokus.

Vzemite kodo komponente App, ki smo jo napisali v tej lekciji in spremenite jo tako, da ob kliku na gumb v inputu poleg postavitve fokusa pride še do čiščenja polja za vnos. Za to uporabite lastnost value inputa.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni