WC
WEB CREATOR AIالحقيبة التدريبية

تنظيم الموقع في قوالب وقطع قابلة لإعادة الاستخدام (React Components)

كيف تصمم البطاقة مرة واحدة وتعرض بها 20 منتجاً أو خدمة دون تكرار الكود؟

0 / 2 أنشطة مكتملة (0%)
ماذا ستتعلم وتنجز في هذه الجلسة؟ (اضغط للعرض)▼
  • ربط نموذج الطلب وإرسال إشعار فوري عبر WhatsApp أو Email
أنشطة الجلسة بالترتيب (اختر النشاط):
النشاط 1 من 2قيد التنفيذ
25 دقيقة تقريبًا

النشاط 01: بناء نموذج إتمام الطلب مع التحقق الصارم (Form Validation)

استقبل اسم العميل، رقم هاتفه، وعنوان التوصيل مع منع الأخطاء والمدخلات الفارغة

1. ما المطلوب في هذا النشاط؟

أبني نموذجاً يتحقق من أن رقم الهاتف يبدأ بالصيغة الصحيحة (مثل 05xxxxxxxx) وأن جميع الحقول المطلوبة مكتملة.

ما الفائدة العملية من هذا النشاط؟

الطلبات الخاطئة أو الأرقام الناقصة تكبد صاحب المتجر خسائر وتضيع وقت موظفي التوصيل.

2. خطوات التنفيذ خطوة بخطوة:

1

أنشئ حالة للنموذج formData وحالة للأخطاء errors.

2

اكتب دالة validateForm تتحقق من صحة كل حقل وتعرض تنبيهاً أحمر إن كان خاطئاً.

3

امنع الإرسال e.preventDefault() إذا كانت هناك أخطاء.

3. كيف تعرف أن النتيجة جاهزة؟

نموذج طلب تفاعلي يوجه العميل برسائل واضحة ويمنع الإرسال الخاطئ.

📄 قالب البداية أو الكود المساعد (اضغط للعرض أو النسخ)▼
template
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).

0 حرف•تم الحفظ التلقائي في المتصفح
* اكتب إجابتك أولًا لتفعيل أزرار الحفظ والإرسال