⊗jsrtPmHkURf 12 of 47 menu

Hook useRef ref-idega töötamiseks React-is

Selles õppetükis töötame ref-idega. Selguse huvides analüüsime hook-i useRef tööd võrdluses hook-iga useState.

Loome komponendi nupuga:

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

Impordime komponenti useState:

import { useState } from 'react';

Ja loome state-i state:

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

Ja nüüd teeme nii, et klikkides nupule suurendaks meie state 1 võrra. State-i väärtust kuvame otse nupu tekstis:

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

Kirjeldame funktsiooni kliki töötlemiseks nupul handleStateClick:

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

Vajutame nuppu ja näeme, kuidas state-i väärtus kasvab.

Ja nüüd loome komponendi App, kuid kasutame mitte state-i, vaid ref-i.

Alustuseks impordime komponenti useRef:

import { useRef } from 'react';

Ja loome ref-i ref. Hook useRef tagastab ref-i objekti ainsa omadusega current, mis meid edaspidi huvitama hakkab. Määrame selle algväärtuseks 0:

const ref = useRef(0);

Paneme nupule klick-i töötleja. Pidage meeles, et me peame lugema/muutma mitte ref ennast, vaid selle omadust current:

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

Lisame funktsiooni kliki töötlemiseks meie nupul. Siin me suurendame current 1 võrra, nagu eelmises state-i näites. Erinevalt state-ist, kus on vaja funktsiooni setState selle väärtuse muutmiseks, töötame ref-i omadusega otse:

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

Nüüd vajutame meie nuppu. Ja mida me näeme? Klikkides sellele, nagu meil algselt oli 0, nii see ka ei muutu.

Te võite muidult hakata kahtlema selles, et väärtus üldse muutub. Kontrollime seda. Selleks lisame funktsiooni kliki töötlejasse veel ühe koodirea väärtuse current väljastamiseks konsooli:

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

Ja nüüd, avades brauseris konsooli, uuesti klikkime nupul ja veendume, et väärtus tõesti muutub iga klikiga ja pettust pole.

Nüüd me näeme, et erinevalt state-ist, ref-i väärtuse muutmine ei kutsu esile komponendi uuesti renderdamist. Seetõttu me iga kord nupu tekstis näeme algset väärtust 0.

Seega, kui teie andmeid kasutatakse renderdamiseks, siis hoidke neid state-is, aga kui te ei vaja uuesti renderdamist, sel juhul võib ref-ide kasutamine olla efektiivsem.

Olgu teie komponendis on lõik teksti 'text' ja nupp. Tehke nii, et iga kord klikkides nupule lõigu teksti lõppu lisatakse hüüumärk. Tehke seda state-i abil.

Looge komponent App, kuid state-i asemel kasutage nüüd ref-i. Veenduge, et nuppu vajutades lõigu tekst ei muutuks. Lisage ka lõigu teksti väljastamine konsooli, avage see ja veenduge, et tegelikult tekst muutub.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu