📻 دليل شامل لاستخدام أزرار الراديو في React للمبتدئين
أزرار الراديو (Radio Buttons) هي عناصر واجهة مستخدم أساسية تسمح للمستخدمين باختيار خيار واحد فقط من مجموعة من الخيارات المتاحة. في React، نتعامل معها بشكل مختلف قليلاً عن HTML العادية.
🔍 ما هي أزرار الراديو ولماذا نستخدمها؟
أزرار الراديو مثالية عندما تريد من المستخدم اختيار خيار واحد فقط من عدة خيارات متاحة. تختلف عن Checkboxes التي تسمح باختيار multiple options.
مثال على حالات الاستخدام:
- اختيار الجنس (ذكر/أنثى)
- تحديد فئة عمرية
- اختيار طريقة دفع
🛠️ إنشاء مجموعة Radio Buttons أساسية
لإنشاء مجموعة Radio Buttons في React، نستخدم عنصر input مع نوع radio:
function RadioGroup() {
return (
<div>
<label>
<input type="radio" name="gender" value="male" />
ذكر
</label>
<label>
<input type="radio" name="gender" value="female" />
أنثى
</label>
</div>
);
}
لاحظ أن جميع الأزرار في المجموعة يجب أن يكون لها نفس الاسم (name) ليعملوا كمجموعة واحدة.
🎯 Controlled Components في React
في React، نفضل استخدام Controlled Components حيث تكون قيمة الـ Radio Button مخزنة في state:
import { useState } from 'react';
function ControlledRadio() {
const [selectedOption, setSelectedOption] = useState('');
const handleChange = (event) => {
setSelectedOption(event.target.value);
};
return (
<div>
<label>
<input
type="radio"
value="option1"
checked={selectedOption === 'option1'}
onChange={handleChange}
/>
الخيار الأول
</label>
<label>
<input
type="radio"
value="option2"
checked={selectedOption === 'option2'}
onChange={handleChange}
/>
الخيار الثاني
</label>
</div>
);
}
📝 أفضل الممارسات لتصميم Radio Groups
- استخدم labels دائماً: اجعل واجهة المستخدم قابلة للنقر بالكامل
- مجموعة واضحة: ضع الأزرار في تخطيط منطقي وواضح
- القيمة الافتراضية: فكر في تعيين قيمة افتراضية عندما يكون ذلك مناسباً
function BetterRadioGroup() {
const [paymentMethod, setPaymentMethod] = useState('credit-card');
return (
<fieldset>
<legend>اختر طريقة الدفع:</legend>
<label style={{ display: 'block', margin: '10px 0' }}>
<input
type="radio"
value="credit-card"
checked={paymentMethod === 'credit-card'}
onChange={(e) => setPaymentMethod(e.target.value)}
/>
💳 بطاقة ائتمان
</label>
<label style={{ display: 'block', margin: '10px 0' }}>
<input
type="radio"
value="paypal"
checked={paymentMethod === 'paypal'}
onChange={(e) => setPaymentMethod(e.target.value)}
/>
📧 PayPal
</label>
</fieldset>
);
}
🚀 معالجة البيانات وإرسال النماذج
عند إرسال النموذج، يمكنك الوصول إلى القيمة المحددة بسهولة:
function RegistrationForm() {
const [formData, setFormData] = useState({
name: '',
gender: ''
});
const handleSubmit = (event) => {
event.preventDefault();
console.log('بيانات النموذج:', formData);
};
const handleInputChange = (event) => {
setFormData({
...formData,
[event.target.name]: event.target.value
});
};
return (
<form onSubmit={handleSubmit}>
<input
type="text"
name="name"
placeholder="الاسم"
value={formData.name}
onChange={handleInputChange}
/>
<div>
<label>
<input
type="radio"
name="gender"
value="male"
checked={formData.gender === 'male'}
onChange={handleInputChange}
/>
ذكر
</label>
<label>
<input
type="radio"
name="gender"
value="female"
checked={formData.gender === 'female'}
onChange={handleInputChange}
/>
أنثى
</label>
</div>
<button type="submit">تسجيل</button>
</form>
);
}
💡 نصائح مهمة للمبتدئين
- لا تنسى خاصية
checked: يجب ربطها مع القيمة في state - استخدم
onChange: للتعامل مع تغييرات المستخدم - نفس الاسم للمجموعة: ensures only one selection
- القيم يجب أن تكون فريدة: لكل radio button قيمة مختلفة
🎓 اختبر معلوماتك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال