⊗jsrtPmHkURf 12 of 47 menu

A useRef hook a ref-ek kezeléséhez Reactben

Ezen a leckén ref-ekkel fogunk dolgozni. Az áttekinthetőség kedvéért elemezzük a useRef hook működését összehasonlítva a useState hookkal.

Hozzunk létre egy komponenst egy gombbal:

return ( <div> <button> state click </button> </div> );

Importáljuk a komponensbe a useState-ot:

import { useState } from 'react';

És hozzunk létre egy state állapotot:

const [state, setState] = useState(0);

Most tegyük úgy, hogy a gombra kattintáskor a state értéke 1-gyel növekedjen. Az állapot értékét közvetlenül a gomb szövegében jelenítjük meg:

<button onClick={handleStateClick}> state click: {state} </button>

Írjuk meg a gomb kattintásának kezelésére szolgáló handleStateClick függvényt:

function handleStateClick() { setState(state + 1); }

Kattintsunk a gombra néhányszor és lássuk, hogyan nő az állapot értéke.

Most hozzunk létre egy App komponenst, de ne állapotot, hanem ref-et használjunk.

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

import { useRef } from 'react';

És hozzunk létre egy ref ref-et. A useRef hook egy ref objektummal tér vissza, aminek egyetlen current tulajdonsága van, ami minket a továbbiakban érdekelni fog. Állítsuk be a kezdő értékét 0-ra:

const ref = useRef(0);

Rendeljük hozzá a gombhoz a kattintáskezelőt. Ne feledjük, hogy nem magát a ref-et kell olvasnunk/módosítanunk, hanem annak current tulajdonságát:

<button onClick={handleRefClick}> ref click: {ref.current} </button>

Adjunk hozzá egy függvényt a gomb kattintásának kezeléséhez. Itt a current értékét 1-gyel növeljük, ahogyan az előző, állapotot használó példában is tettük. Az állapottal ellentétben, ahol egy setState függvényre van szükség az érték megváltoztatásához, a ref tulajdonságával közvetlenül dolgozunk:

function handleRefClick() { ref.current = ref.current + 1; }

Most kattintsunk a gombunkra. És mit látunk? Amikor rákattintunk, a 0 érték, ami kezdetben volt, nem változik.

Természetesen kezdhetünk kételkedni abban, hogy az érték egyáltalán változik-e. Ellenőrizzük le ezt. Ehhez adjunk hozzá a kattintáskezelő függvényhez még egy kódsort, ami a current értékét kiírja a konzolra:

function handleRefClick() { ref.current = ref.current + 1; console.log('ref click: ' + ref.current); }

Most, miután megnyitottuk a böngésző konzolját, ismét kattintsunk a gombra és győződjünk meg arról, hogy az érték valóban változik minden egyes kattintáskor, és nincs semmiféle csalás.

Most látjuk, hogy az állapottal ellentétben a ref értékének megváltoztatása nem vált ki a komponens újrarajzolását. Ezért minden alkalommal a gomb szövegében a kezdő 0 értéket látjuk.

Így, ha az adataidat a megjelenítéshez használod, akkor tárold őket állapotban, ha viszont nincs szükséged újrarajzolásra, akkor a ref-ek használata hatékonyabb megoldás lehet.

Tegyük fel, hogy a komponensedben van egy bekezdés 'text' szöveggel és egy gomb. Állítsd be, hogy minden alkalommal, amikor a gombra kattintasz, a bekezdés szövegéhez egy felkiáltó jel kerüljön a végére. Old meg ezt állapot használatával.

Hozz létre egy App komponenst, de most állapot helyett használj ref-et. Győződj meg arról, hogy a gomb megnyomásakor a bekezdés szövege nem fog változni. Adj hozzá a bekezdés szövegének kiírását a konzolra is, nyisd meg a konzolt és győződj meg arról, hogy valójában a szöveg változik.

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