⊗jsrtPmHkURD 13 of 47 menu

Použití hooku useRef pro DOM v Reactu

V jedné z předchozích lekcí jsme zmínili, že se refy nejčastěji používají pro přístup k DOM elementům.

Refy přijdou vhod tehdy, když potřebujete, například, zaostřit na element, provést scroll nebo vypočítat jeho velikost a pozici, případně využít některé jeho metody nebo vlastnosti, protože na takové věci v React neexistují vestavěné metody.

Podívejme se na příkladu s inputem, jak se to dělá. Vytvořme komponentu s inputem a tlačítkem:

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

Pro začátek, importujme do komponenty useRef:

import { useRef } from 'react';

A založme ref ref v komponentě. Inicializujme jej hodnotou null:

const ref = useRef(null);

Přidejme na tlačítko handler kliku:

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

Abychom měli přístup k inputu, vložme náš ref ref do atributu ref inputu. Tímto způsobem, když React bude vytvářet DOM uzel pro tento input, vloží odkaz na něj do ref.current a my budeme moci používat metody inputu:

<input ref={ref} />

A nakonec, přidejme funkci pro zpracování kliku, aby po kliknutí na tlačítko, na input bylo zaostřeno. Nyní to můžeme udělat pomocí refu, ve kterém je odkaz na náš input, přístupem k jeho metodě focus:

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

Klikejte na tlačítko a přesvědčte se, že na input je zaostřováno.

Vezměte kód komponenty App, který jsme napsali v této lekci a udělejte to, aby po kliku na tlačítko v inputu kromě zaostření došlo ještě k vyčištění pole. Použijte k tomu vlastnost value inputu.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout