تخطَّ إلى المحتوى

⚛️ شرح React

خطّاف useRef

الدرس 11 من 32· ⏱ 2 دقائق قراءة· 🗓 آخر تحديث: ٢٠ يونيو ٢٠٢٦

ما هو useRef؟

خطّاف يعطيك "صندوقًا" قيمته في .current يستمرّ بين عمليات العرض، دون أن يسبّب إعادة عرض عند تغيّره. له استخدامان رئيسيان.

1) الوصول إلى عناصر DOM 🌟

import { useRef } from "react";

function SearchBox() {
  const inputRef = useRef(null);

  function focusInput() {
    inputRef.current.focus();   // الوصول للعنصر مباشرةً
  }

  return (
    <>
      <input ref={inputRef} />
      <button onClick={focusInput}>تركيز</button>
    </>
  );
}

نربط ref بالعنصر، فيصبح متاحًا عبر inputRef.current.

2) حفظ قيمة لا تُعيد العرض

عكس useState: تغيّر القيمة لا يُعيد عرض المكوّن. مفيد للمؤقّتات والقيم السابقة:

function Stopwatch() {
  const [time, setTime] = useState(0);
  const intervalRef = useRef(null);

  function start() {
    intervalRef.current = setInterval(() => {
      setTime((t) => t + 1);
    }, 1000);
  }

  function stop() {
    clearInterval(intervalRef.current);
  }

  return (
    <>
      <p>{time}s</p>
      <button onClick={start}>ابدأ</button>
      <button onClick={stop}>أوقف</button>
    </>
  );
}

useRef مقابل useState

useStateuseRef
تغيّر القيمةيُعيد العرضلا يُعيد العرض
الاستخدامبيانات تظهر في الواجهةDOM، مؤقّتات، قيم خفية

🔑 القاعدة: إن كانت القيمة تظهر في الواجهة → useState. إن كانت "خلف الكواليس" → useRef.

الأخطاء الشائعة

  • ❌ استخدام ref لعرض بيانات → التغيير لا يُحدّث الواجهة؛ استخدم useState.
  • ❌ الوصول لـ .current قبل التركيب → يكون null في أول عرض.
  • ❌ تعديل DOM يدويًا بكثرة → دع React يدير الواجهة قدر الإمكان.

خلاصة

useRef يعطيك مرجعًا في .current يبقى بين العروض دون إعادة عرض. استخدمه للوصول لـ DOM (ref={...}) أو لحفظ قيم خفية كالمؤقّتات. تذكّر: ما يظهر في الواجهة = useState، وما هو خلف الكواليس = useRef.

شرح خطّاف useRef — React بالعربي
خطّاف useRefReact بالعربي · The Code Fix

📚 لمزيد من التعمّق في React، راجِع التوثيق الرسمي لـ React.

هل كان هذا الدرس مفيدًا؟