⊗jsrtPmHkURf 12 of 47 menu

Reactda reflar bilan ishlash uchun useRef huki

Ushbu darsda biz reflar bilan ishlaymiz. Aniqlik uchun keling useRef hukining ishlashini useState huki bilan solishtirib ko'ramiz.

Keling, tugmasi bo'lgan komponent yarataylik:

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

Komponentga useState ni import qilaylik:

import { useState } from 'react';

Va state holatini yarataylik:

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

Endi tugmachani bosganda bizning state imiz 1 ga oshishi uchun qilaylik. Holat qiymatini to'g'ridan-to'g'ri tugma matnida chiqaramiz:

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

Tugma bosilishini qayta ishlash uchun handleStateClick funksiyasini yozamiz:

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

Tugmachani bir necha marta bosib ko'ramiz va holat qiymati qanday oshayotganini ko'ramiz.

Endi keling App komponentini holat ishlatmasdan, balki ref ishlatib yarataylik.

Boshlash uchun, komponentga useRef ni import qilaylik:

import { useRef } from 'react';

Va ref refini yarataylik. useRef huki o'z natijasida bizni keyin qiziqtiradigan yagona current xususiyati bo'lgan ref obyektini qaytaradi. Uning boshlang'ich qiymatini 0 ga o'rnatamiz:

const ref = useRef(0);

Tugmachaga klik ishlovchisini o'rnatamiz. Eslab qoling, biz ref ning o'zini emas, balki uning current xususiyatini o'qishimiz/o'zgartirishimiz kerak:

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

Tugma bosilishini qayta ishlash uchun funksiya qo'shamiz. Bu yerda biz current ni holat bilan oldingi misolda bo'lgani kabi 1 ga oshiramiz. Holatdan farqli o'laroq, uning qiymatini o'zgartirish uchun setState funksiyasi talab qilinadi, ref xususiyati bilan biz to'g'ridan-to'g'ri ishlaymiz:

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

Endi tugmachamizni bosib ko'ramiz. Va nima ko'ramiz? Unga bosganda, boshlang'ich 0 o'zgarmay qoladi.

Albatta, qiymat umuman o'zgarayotganligiga shubha qilishni boshlashingiz mumkin. Keling, buni tekshiramiz. Buning uchun klik ishlovchi funksiyasiga current qiymatini konsolga chiqaruvchi yana bir kod qatorini qo'shamiz:

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

Endi, brauzerdagi konsolni ochib, yana tugmachani bosib ko'ramiz va har bir bosishda qiymat haqiqatan ham o'zgarayotganiga va hech qanday aldov yo'qligiga ishonch hosil qilamiz.

Endi biz ko'ramizki, holatdan farqli o'laroq, ref qiymatining o'zgarishi komponentning qayta chizilishiga (render) sabab bo'lmaydi. Shuning uchun biz har safar tugma matnida boshlang'ich 0 qiymatini ko'ramiz.

Shunday qilib, agar ma'lumotlaringiz chizish (render) uchun ishlatilsa, ularni holatda saqlang, agar sizga chizish kerak bo'lmasa, ref lardan foydalanish samaraliroq bo'lishi mumkin.

Komponentingizda 'text' matni bo'lgan abzats va tugma bo'lsin. Tugma bosilganda har safar abzats matnining oxiriga undov belgisi qo'shilishi uchun qiling. Buni holat yordamida bajaring.

App komponentini yarating, lekin endi holat o'rniga ref ishlating. Tugma bosilganda abzats matni o'zgarmasligiga ishonch hosil qiling. Shuningdek, abzats matnini konsolga chiqarishni qo'shing, konsolni oching va matn haqiqatan ham o'zgarayotganiga ishonch hosil qiling.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish