🎯 إدارة حقول إدخال متعددة في React بسهولة
في تطبيقات React الواقعية، غالباً ما نواجه نماذج تحتوي على عدة حقول إدخال. بدلاً من إنشاء state منفصل لكل حقل، يمكننا استخدام تقنية ذكية لإدارة جميع الحقول في state واحد!
📝 لماذا نستخدم state واحد لحقول متعددة؟
عندما يكون لدينا نموذج يحتوي على:
- حقل الاسم
- حقل البريد الإلكتروني
- حقل الهاتف
- حقل الرسالة
بدلاً من كتابة useState لكل حقل، يمكننا تجميعهم في كائن واحد مما يجعل الكود أكثر تنظيماً وسهولة في الصيانة.
🛠️ إنشاء State للحقول المتعددة
import { useState } from 'react';
function ContactForm() {
const [formData, setFormData] = useState({
name: '',
email: '',
phone: '',
message: ''
});
return (
// سيأتي النموذج هنا
);
}
✨ كتابة دالة معالجة التغيير الموحدة
المفتاح السحري هو استخدام خاصية name في عناصر الإدخال:
const handleInputChange = (event) => {
const { name, value } = event.target;
setFormData(prevData => ({
...prevData, // نحافظ على البيانات الحالية
[name]: value // نحدث الحقل المحدد فقط
}));
};
📋 بناء النموذج مع الحقول المتعددة
الآن لنطبق ما تعلمناه في نموذج اتصال كامل:
return (
<form>
<input
type="text"
name="name"
value={formData.name}
onChange={handleInputChange}
placeholder="الاسم الكامل"
/>
<input
type="email"
name="email"
value={formData.email}
onChange={handleInputChange}
placeholder="البريد الإلكتروني"
/>
<input
type="tel"
name="phone"
value={formData.phone}
onChange={handleInputChange}
placeholder="رقم الهاتف"
/>
<textarea
name="message"
value={formData.message}
onChange={handleInputChange}
placeholder="رسالتك"
/>
<button type="submit">إرسال</button>
</form>
);
🔍 كيف تعمل هذه التقنية؟
- الكشف عن الحقل: نستخدم
event.target.nameلمعرفة أي حقل تم التعديل عليه - التحديث الانتقائي: نحدث فقط الحقل الذي تغير مع الحفاظ على بقية البيانات
- الكفاءة: دالة واحدة تتعامل مع جميع الحقول بدلاً من دوال متعددة
💡 نصائح مهمة للحقول المتعددة
- تأكد أن خاصية
nameمطابقة تماماً لاسم الخاصية في state - استخدم القيمة المناسبة لـ
typeفي كل حقل إدخال - يمكنك إضافة التحقق من الصحة لكل حقل حسب نوعه
🚀 مثال عملي: عرض البيانات المدخلة
لرؤية البيانات وهي تتغير في الوقت الحقيقي:
<div>
<h3>معاينة البيانات:</h3>
<p>الاسم: {formData.name}</p>
<p>البريد: {formData.email}</p>
<p>الهاتف: {formData.phone}</p>
<p>الرسالة: {formData.message}</p>
</div>
🎓 اختبر معلوماتك
السؤال 1 من 30% أكملت
ما هي الفائدة الرئيسية من استخدام state واحد بدلاً من إنشاء state منفصل لكل حقل إدخال في React؟
آخر تحديث: ٣٠ أبريل ٢٠٢٦
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال
جاري تحميل التعليقات...