⊗jsrtPmHkURf 12 of 47 menu

React-də Reflərlə Işləmək üçün useRef Hook-u

Bu dərsdə biz reflərlə işləyəcəyik. Aydınlıq üçün gəlin useRef hook-unun işini useState hook-u ilə müqayisədə nəzərdən keçirək.

Gəlin düyməsi olan bir komponent yaradaq:

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

Komponentə useState import edək:

import { useState } from 'react';

state state-ni yaradaq:

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

İndi isə elə edək ki, düyməyə kliklədikdə bizim state 1 vahid artsın. State-in dəyərini birbaşa düymənin mətnində çıxardacağıq:

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

Düyməyə klik üçün emal funksiyası handleStateClick təsvir edək:

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

Gəlin düyməyə bir neçə dəfə klik edək və state-in dəyərinin necə artdığını görək.

İndi gəlin App komponentini state istifadə etməyərək, ref istifadə edərək yaradaq.

Əvvəlcə, komponentə useRef import edək:

import { useRef } from 'react';

ref ref-ni yaradaq. useRef hook-u nəticə olaraq bizə yeganə current xüsusiyyəti olan ref obyekti qaytarır, hansı ki, gələcəkdə bizim üçün maraqlı olacaq. Onun ilkin dəyərini 0 təyin edək:

const ref = useRef(0);

Düyməcik üçün klik emalçısı təyin edək. Xatırlayın ki, biz ref-in özünü deyil, onun current xüsusiyyətini oxumalı/dəyişməliyik:

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

Düyməmizə klik emalı üçün funksiya əlavə edək. Burada, əvvəlki state nümunəsində olduğu kimi, biz current-i 1 vahid artıracağıq. State-dən fərqli olaraq, hansında ki, onun dəyərini dəyişmək üçün setState funksiyası tələb olunur, biz ref-in xüsusiyyəti ilə birbaşa işləyirik:

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

İndi düyməmizə klik edək. Və nə görürük? Ona kliklədikdə, ilkin olaraq 0 necə idisə, elə də dəyişmir.

Əlbəttə, dəyərin ümumiyyətlə dəyişdiyinə şübhə edə bilərsiniz. Gəlin bunu yoxlayaq. Bunun üçün klik emalçısı funksiyasına current dəyərini konsola çıxaran başqa bir kod sətri əlavə edək:

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

İndi, brauzerdə konsolu açıb, yenidən düyməyə klikləyək və hər klikdə dəyərin həqiqətən də dəyişdiyinə və heç bir aldatma olmadığına əmin olaq.

İndi görürük ki, state-dən fərqli olaraq, ref-in dəyərinin dəyişməsi komponentin render olunmasını trigger etmir. Buna görə də biz hər dəfə düymənin mətnində ilkin dəyər 0 görürük.

Beləliklə, əgər sizin məlumatlarınız render üçün istifadə olunursa, onda onları state-də saxlayın, əgər sizə render lazım deyilsə, belə bir halda reflərdən istifadə daha səmərəli ola bilər.

Tutaq ki, sizin komponentinizdə mətni 'text' olan abzas və düymə var. Elə edin ki, hər dəfə düyməyə kliklədikdə abzasın mətninə nida işarəsi əlavə olunsun. Bunu state ilə edin.

App komponentini yaradın, amma indi state əvəzinə ref istifadə edin. Əmin olun ki, düyməyə basdıqda abzasın mətni dəyişməyəcək. Həmçinin abzasın mətnini konsola çıxarış əlavə edin, onu açın və mətnin əslində dəyişdiyinə əmin olun.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et