0Pricing
React Academy · درس

المدخلات غير المتحكَّم بها باستخدام useRef

يمكنكم الوصول إلى قيم مدخلات DOM عبر refs بدلًا من state في سيناريوهات النماذج البسيطة

المدخلات غير المتحكَّم بها باستخدام useRef درس مجاني في React Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

مرحبًا

في هذا الدرس ستستخدم حقول إدخال غير مُدارة مع useRef للوصول إلى قيم حقول إدخال DOM دون إدارتها في حالة React.

مُدار مقابل غير مُدار

تكون قيمة **حقل الإدخال المُدار** مدفوعة بحالة React (value + onChange). أما **حقل الإدخال غير المُدار** فيدير قيمته بنفسه داخل DOM، ولا يقرأها React إلا عند الحاجة من خلال مرجع.
// Controlled
<input value={name} onChange={e => setName(e.target.value)} />

// Uncontrolled
const nameRef = useRef();
<input ref={nameRef} defaultValue="" />

قراءة القيمة عند الإرسال

مع حقول الإدخال غير المُدارة، اقرأ القيمة عندما يرسل المستخدم النموذج من خلال الوصول إلى `ref.current.value`. ولا تحدث أي تحديثات للحالة أثناء كتابة المستخدم.
function Form() {
  const nameRef = useRef();
  const handleSubmit = (e) => {
    e.preventDefault();
    console.log(nameRef.current.value);
  };
  return (
    <form onSubmit={handleSubmit}>
      <input ref={nameRef} />
      <button type="submit">Submit</button>
    </form>
  );
}

defaultValue مقابل value

بالنسبة إلى حقول الإدخال غير المُدارة، استخدم `defaultValue` وليس `value` لتعيين القيمة الأولية. يؤدي تعيين `value` دون `onChange` إلى إصدار React تحذيرًا، ويصبح حقل الإدخال للقراءة فقط.
<input ref={nameRef} defaultValue="Initial text" />

متى تستخدم حقول الإدخال غير المُدارة

تكون حقول الإدخال غير المُدارة مفيدة في: النماذج البسيطة التي تحتاج فيها إلى القيم عند الإرسال فقط، وحقول إدخال الملفات التي لا يمكن لـ React التحكم فيها، وحقول الإدخال الحساسة للأداء عندما يكون تجنّب إعادة العرض مهمًا.

إعادة ضبط حقل إدخال غير مُدار

لإعادة ضبط حقل إدخال غير مُدار، عيّن `ref.current.value = ''` مباشرةً. أو غيّر خاصية `key` للمكوّن لإجبار React على إعادة تركيبه باستخدام عقدة DOM جديدة.
// Reset imperatively
nameRef.current.value = '';

// Or remount
setFormKey(k => k + 1);
<input key={formKey} ref={nameRef} />

مراجع متعددة لحقول إدخال متعددة

بالنسبة إلى النماذج التي تحتوي على حقول متعددة غير مُدارة، أنشئ مرجعًا منفصلًا لكل حقل إدخال. ويمكنك الوصول إلى `.current.value` الخاص بكل مرجع عند إرسال النموذج.
const emailRef = useRef();
const passwordRef = useRef();

<input ref={emailRef} type="email" />
<input ref={passwordRef} type="password" />

التركيز عند التركيب

يُستخدم useRef غالبًا لتركيز حقل إدخال تلقائيًا عند تركيب المكوّن. اقرأ المرجع داخل useEffect بعد التركيب.
const inputRef = useRef();
useEffect(() => {
  inputRef.current?.focus();
}, []);
<input ref={inputRef} />

حقول الإدخال غير المُدارة والتحقق من الصحة

يتطلب التحقق من صحة حقول الإدخال غير المُدارة قراءة القيم مباشرةً عند الإرسال. وهذا أكثر تعقيدًا من حقول الإدخال المُدارة عند إجراء التحقق الفوري. فضّل حقول الإدخال المُدارة عندما تحتاج إلى ملاحظات فورية.

المقايضة عند استخدام useRef

تتجنب حقول الإدخال غير المُدارة عمليات إعادة العرض، لكنها تتخلى عن تفاعلية React. ولا يمكنك العرض بشكل مشروط بناءً على قيمة حقل الإدخال في الوقت الفعلي دون قراءة المرجع وتحديث الحالة يدويًا.

تحقّق سريعًا

ما الخاصية التي ينبغي استخدامها لتعيين قيمة أولية لحقل إدخال غير مُدار في React؟

مراجعة

تستخدم حقول الإدخال غير المُدارة المراجع لقراءة القيم عند الطلب. استخدم defaultValue لتعيين القيم الأولية، واقرأ ref.current.value عند الإرسال، وأعد الضبط بمسح قيمة المرجع أو تغيير key.

التالي

الدرس التالي: **حقل إدخال الملفات وقراءة بيانات الملفات** — ستتعامل مع حقول إدخال الملفات، وتقرأ البيانات الوصفية وبيانات الصور باستخدام FileReader.

الأسئلة الشائعة

هل درس «المدخلات غير المتحكَّم بها باستخدام useRef» مجاني؟

نعم — نص درس «المدخلات غير المتحكَّم بها باستخدام useRef» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «المدخلات غير المتحكَّم بها باستخدام useRef»؟

يمكنكم الوصول إلى قيم مدخلات DOM عبر refs بدلًا من state في سيناريوهات النماذج البسيطة تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «المدخلات غير المتحكَّم بها باستخدام useRef»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المدخلات غير المتحكَّم بها باستخدام useRef
  2. إدخال الملفات وقراءة بياناتها
  3. واجهة تحميل الملفات بالسحب والإفلات
  4. رفع الملفات إلى واجهة برمجة خلفية
← العودة إلى React Academy