المكوّن الخاضع للرقابة هو الذي تقود قيمته حالة React: تُربط القيمة بالحالة، وتكتب onChange القيمة الجديدة مرة أخرى داخل الحالة، فيُغلق ذلك حلقة تدفّق البيانات أحادي الاتجاه مع تغذية راجعة من الحدث. وهو النمط الافتراضي لنماذج React، ويبقي القيمة الحالية صالحة continuously للتدقيق، قابلة للإرسال، وقادرة على قيادة حقول أخرى دون المساس بال DOM أسلوباً إلزامياً. ولأن الحالة هي مصدر الحقيقة الوحيد، يمكن إعادة ضبط أي حقل خاضع للرقابة أو ملؤه مسبقاً أو مقارنته بحقوله المجاورة في أي لحظة.
المجموعة
أنماط المكونات
النوع
نمط
ℹ️ ملاحظة يحوّل المحرّر JSX إلى JavaScript ويعرض الواجهة الحقيقية داخل بيئة معزولة؛ تُركَّب المكوّنات تلقائياً دون استدعاء render يدوي.
📝 الصيغة
<input
value={name} // الحالة هي التي تقود العرض
onChange={e => setName(e.target.value)} // الكتابة تعيد القيمة إلى الحالة
/>
القيمة المرجعة:لا قيمة معادة؛ فهذه المدخلات تصف نمط برمجة لا دالة.
▶ مثال
المثال يعمل مباشرة: يُعرض تلقائياً عند التوسيع وتظهر التعديلات فوراً.
الناتج:
بعد كتابة «Alice» واختيار «Advanced»، يعرض السطر أدناه «Hello, Alice (Advanced)» فوراً — فكل ضغطة مفتاح تحدّث الحالة مرة واحدة، وتُعرض الواجهة تزامناً معها.
💡 نصيحة يجب أن تظهر value و onChange معاً: فربط value بلا onChange يقفل الحقل ويجعل الكتابة فيه مستحيلة.
ℹ️ ملاحظة بعد أن يصبح الحقل خاضعاً للرقابة، تقع كل ضغطة مفتاح في الحالة، فتصير التحقّق وأزرار التعطيل والقوائم المنسدلة المرتبطة كلها مشتقّات وظيفية خالصة من الحالة.
⚠️ تحذير ما إن تصبح القيمة خاضعة للرقابة فلا تدعها تصير undefined أبداً، وإلا اشتكى React من التبديل بين الحقل الخاضع للرقابة وغير الخاضع لها.
س كيف أختار بين المكوّن الخاضع للرقابة وغير الخاضع لها؟
ج استخدم الخاضع للرقابة حين تحتاج تحقّقاً فورياً أو حقولاً مرتبطة أو تعطيلاً شرطياً أو معالجة قبل الإرسال؛ واستخدم غير الخاضع للرقابة (قراءة القيمة عبر ref) حين لا يهمّك إلا القيمة وقت الإرسال. نماذج React تميل إلى الخاضع للرقابة.
س ماذا يحدث إن كتبت value بلا onChange؟
ج يصبح الحقل للقراءة فقط: يثبّت React القيمة على قيمة الحالة، فلا تؤثر ضغطات المفاتيح، وتُسجَّل تحذير في الطرفية.
س هل يحتاج كل حقل إلى useState خاص به؟
ج مع كثرة الحقول يمكنك دمجها في حالة كائن واحد (يُحدَّث باسم الحقل)، أو استخراج خطّاف مخصّص أو useReducer لإدارتها في مكان واحد.
فريق Web-Tutorial التقني
منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.