Form Validation التحقّق من النماذج

آخر تحديث: 2026-11-03

Form Validation التحقّق من النماذج

جوهر التحقّق هو استخراج الأخطاء من الحالة: دالة تحقّق تحسب كائن أخطاء، ويُفحص الكائن كله مرة واحدة قبل الإرسال، فإذا كان هناك خطأ يُمنع الإرسال ويُعرض رسالة الخطأ. ورسائل الخطأ واجهة أيضاً، فالعرض الشرطي يكفي — ولا يلزم أي عمل إلزامي على DOM. ولأن الأخطاء تُحسب أثناء العرض، لا يمكن أن تنحرف عن الحقول التي تصفها، وهذا يُزيل فئة كاملة من خلل رسائل التحقّب القديمة.

المجموعةأنماط المكونات
النوعنمط

ℹ️ ملاحظة يحوّل المحرّر JSX إلى JavaScript ويعرض الواجهة الحقيقية داخل بيئة معزولة؛ تُركَّب المكوّنات تلقائياً دون استدعاء render يدوي.

📝 الصيغة

const errors = validate(values)   // استخرج الأخطاء من الحالة
const hasError = Object.keys(errors).length > 0

<form onSubmit={e => {
  e.preventDefault()               // أوقف الإرسال الافتراضي للمتصفح
  if (!hasError) submit(values)
}}>

القيمة المرجعة:لا قيمة معادة؛ فهذه المدخلات تصف نمط برمجة لا دالة.

▶ مثال

المثال يعمل مباشرة: يُعرض تلقائياً عند التوسيع وتظهر التعديلات فوراً.

الناتج:

حين ينقص @ من البريد الإلكتروني أو يقلّ طول كلمة المرور عن 6 محارف، يعرض الضغط على «Register» خطأً أحمر تحت الحقل المعني؛ وبعد أن يصبح الاثنان صالحَين، تعرض الصفحة «Registered successfully».

💡 النقاط الأساسية

💡 نصيحة المس أولاً ثم اشتكِ لاحقاً: علم «تم اللمس» أو «تم الإرسال» يتحكم في ظهور الأخطاء، فلا يواجه المستخدم جداراً من النص الأحمر عند الدخول.
ℹ️ ملاحظة استخرج الأخطاء أثناء العرض بدل تخزينها بـ setState — فالاستخراج يضمن بقاءها متزامنة مع الحقل.
⚠️ تحذير نسيان preventDefault يترك النموذج ينفّذ الإرسال الأصلي للمتصفح ويعيد تحميل الصفحة، فتومض رسائل الخطأ ثم تختفي.
المزيد من الحالات قريباً.

📚 دروس ذات صلة

❓ الأسئلة الشائعة

س أين ينبغي أن يكون التحقّق: في onChange أم في onSubmit؟
ج ضع فحوص الصيغة الحرجة في مكان واحد عند الإرسال؛ أما التلميحات اللطيفة الفورية فيمكن أن تكون في onChange أو onBlur — ولا تعارض بينهما.
س هل ينبغي تخزين رسائل الخطأ في الحالة؟
ج لا يُنصح بذلك. الأخطاء مشتقّة من الحالة، فاحسبها أثناء العرض؛ وتخزينها قد يُخرجها عن التزامن مع الحقل.
س لماذا لا تظهر الأخطاء بعد الإرسال؟
ج الأسباب الشائعة: نسي onSubmit استدعاء e.preventDefault() فتم الإرسال أصلياً وأُعيد تحميل الصفحة، أو لم يُضبط العلم الذي يعتمد عليه عرض الخطأ.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%