تنظيم الموقع في قوالب وقطع قابلة لإعادة الاستخدام (React Components)
كيف تصمم البطاقة مرة واحدة وتعرض بها 20 منتجاً أو خدمة دون تكرار الكود؟
ماذا ستتعلم وتنجز في هذه الجلسة؟ (اضغط للعرض)▼
- ربط نموذج الطلب وإرسال إشعار فوري عبر WhatsApp أو Email
النشاط 01: بناء نموذج إتمام الطلب مع التحقق الصارم (Form Validation)
استقبل اسم العميل، رقم هاتفه، وعنوان التوصيل مع منع الأخطاء والمدخلات الفارغة
أبني نموذجاً يتحقق من أن رقم الهاتف يبدأ بالصيغة الصحيحة (مثل 05xxxxxxxx) وأن جميع الحقول المطلوبة مكتملة.
الطلبات الخاطئة أو الأرقام الناقصة تكبد صاحب المتجر خسائر وتضيع وقت موظفي التوصيل.
2. خطوات التنفيذ خطوة بخطوة:
أنشئ حالة للنموذج formData وحالة للأخطاء errors.
اكتب دالة validateForm تتحقق من صحة كل حقل وتعرض تنبيهاً أحمر إن كان خاطئاً.
امنع الإرسال e.preventDefault() إذا كانت هناك أخطاء.
نموذج طلب تفاعلي يوجه العميل برسائل واضحة ويمنع الإرسال الخاطئ.
📄 قالب البداية أو الكود المساعد (اضغط للعرض أو النسخ)▼
export function CheckoutForm({ onSubmit }) {
const [phone, setPhone] = useState('');
const [error, setError] = useState('');
const handleSubmit = (e) => {
e.preventDefault();
if (!phone.startsWith('05') || phone.length !== 10) {
setError('يرجى إدخال رقم هاتف سعودي صحيح يبدأ بـ 05 ويتكون من 10 أرقام');
return;
}
setError('');
onSubmit({ phone });
};
return (
<form onSubmit={handleSubmit} className="space-y-4">
<div>
<label className="block text-xs font-bold mb-1">رقم الجوال للتوصيل</label>
<input
type="tel"
value={phone}
onChange={(e) => setPhone(e.target.value)}
placeholder="05XXXXXXXX"
className="w-full p-2.5 rounded-xl border border-slate-300 text-sm"
/>
{error && <p className="text-xs text-red-500 mt-1">{error}</p>}
</div>
<button type="submit" className="w-full py-3 bg-emerald-600 text-white rounded-xl font-bold">
تأكيد الطلب الآن
</button>
</form>
);
}تلميحات مساعدة (1)▼
- • 💡 استخدم required و type="tel" في وسوم input كخط دفاع أول في المتصفح.
4. مساحة الحل وتسليم النتيجة عبر واتساب
اكتب إجابتك أو الكود أو رابط عملك في الصندوق أدناه. تُحفظ مسودتك تلقائيًا في متصفحك، وعند الضغط على «إرسال النتيجة عبر واتساب» سيتم حفظ الإجابة في سجل تقدمك وفتح رسالة واتساب جاهزة لإرسالها للمدرب (+90 538 201 50 72).