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

useRef()

مرجع يبقى بين عمليات العرض useRef()

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

useRef(initial) يُرجع كائنًا ثابتًا شكله { current: initial } يبقى نفسه طوال عمر المكوّن. عكس useState، تغيير .current لا يُعيد رسم المكوّن — لذلك يُستخدم لقيم لا تحتاج ظهورًا فوريًا في الواجهة.

الاستخدامان الأشهر: الوصول المباشر لعنصر DOM عبر تمرير الـ ref للخاصية ref={...}، وحفظ قيم بين عمليات الرندر (مثل معرّف مؤقّت أو القيمة السابقة) دون إعادة رسم.

الصياغة

const ref = useRef(initialValue);
// الوصول: ref.current

📄 مثال

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

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

أهم المعاملات

المعاملالوظيفة
initialValueالقيمة الابتدائية لـ .current
.currentالخاصية القابلة للقراءة والتعديل المباشر بلا إعادة رندر

💡 نصائح عملية

  • لا تقرأ أو تكتب ref.current أثناء الرندر نفسه — فقط داخل معالجات الأحداث أو useEffect
  • استخدمه لحفظ معرّف setInterval/setTimeout لتتمكّن من إلغائه لاحقًا

⚠️ أخطاء شائعة

  • استخدام useRef لعرض بيانات في الواجهة — التغيير لا يُحدّث الشاشة؛ الحل الصحيح useState
  • الوصول لـ ref.current قبل التركيب الأول (mount) — تكون قيمته null حينها

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار REACT الكامل بالعربي.