0Pricing
React Academy · درس

التحقق من المخطط باستخدام Zod

ادمج @hookform/resolvers ومخططات Zod للتحقق من النماذج بأمان نوعي.

التحقق من المخطط باستخدام Zod درس مجاني في React Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

مرحبًا

في هذا الدرس ستدمجون React Hook Form مع مخططات Zod عبر @hookform/resolvers للحصول على تحقق آمن من حيث الأنواع، مع مصدر واحد للحقيقة لكل من النموذج وأنواع TypeScript.

لماذا نستخدم التحقق من المخطط؟

يصبح تعريف قواعد التحقق مباشرةً داخل register() مطوّلًا وصعب إعادة الاستخدام. يعرّف مخطط Zod جميع قواعد التحقق في مكان واحد، ويستنتج أنواع TypeScript تلقائيًا، ويمكن مشاركته بين الواجهة الأمامية والواجهة الخلفية.

التثبيت

ثبّتوا Zod وحزمة المحلّل الخاصة بـ RHF.
npm install zod @hookform/resolvers

تعريف مخطط Zod

استخدموا z.object() لتعريف بنية النموذج. يستخدم كل حقل نوعًا من Zod مع أساليب تحقق متسلسلة.
import { z } from 'zod';

const loginSchema = z.object({
  email: z.string().email('Invalid email'),
  password: z.string().min(8, 'At least 8 characters'),
});

استنتاج أنواع TypeScript

استخدموا z.infer لاشتقاق نوع TypeScript من مخطط Zod تلقائيًا. لا حاجة إلى واجهة منفصلة.
type LoginForm = z.infer<typeof loginSchema>;
// { email: string; password: string }

الربط مع useForm عبر resolver

مرّروا zodResolver(schema) إلى خيار resolver في useForm. سيستخدم RHF لغة Zod للتحقق من النموذج بدلًا من القواعد المضمّنة مباشرةً.
import { zodResolver } from '@hookform/resolvers/zod';

const { register, handleSubmit, formState } = useForm<LoginForm>({
  resolver: zodResolver(loginSchema),
});

لا مزيد من القواعد المضمّنة مباشرةً

باستخدام zodResolver، لن تعودوا بحاجة إلى تمرير قواعد إلى register(). استدعوا register('fieldName') فقط دون وسيط ثانٍ. تتولى Zod جميع عمليات التحقق.
<input {...register('email')} />
{errors.email && <p>{errors.email.message}</p>}

عمليات التحقق المعقدة باستخدام Zod

تدعم Zod عمليات تحقق قوية: ‏url() وuuid() وregex() وrefine() للمنطق المخصص، وsuperRefine() للتحقق بين الحقول
const schema = z.object({
  url: z.string().url('Must be a valid URL'),
  confirmPassword: z.string(),
}).refine(
  data => data.password === data.confirmPassword,
  { message: 'Passwords must match', path: ['confirmPassword'] }
);

التحقق بين الحقول

يمكن لـ refine() أو superRefine() في Zod الوصول إلى قيم جميع الحقول، مما يتيح تطبيق قواعد بين الحقول، مثل «يجب أن يكون تاريخ الانتهاء بعد تاريخ البدء»
const schema = z.object({
  start: z.string(),
  end: z.string(),
}).refine(d => d.end > d.start, {
  message: 'End must be after start',
  path: ['end'],
});

مشاركة المخططات مع الواجهة الخلفية

في مشروع TypeScript متكامل، صدّر مخطط Zod من وحدة مشتركة. استخدمه في نموذج React وكذلك في معالج API الخاص بـ Node.js/Next.js لضمان اتساق التحقق
// shared/schemas.ts
export const loginSchema = z.object({ ... });

// frontend — import and use as resolver
// backend — import and call .parse() on request body

تحقق سريع

ما الميزة الرئيسية لاستخدام z.infer لنوع النموذج في TypeScript؟

مراجعة

عرّف مخطط Zod، واستنتج نوع TypeScript باستخدام z.infer، ومرّر zodResolver إلى useForm، وأزل قواعد التحقق المضمّنة. استخدم refine() للتحقق بين الحقول، وشارك المخططات بين الواجهة الأمامية والواجهة الخلفية

التالي

الدرس التالي: **الحقول الديناميكية باستخدام useFieldArray** — ستضيف حقول النموذج الديناميكية وتحذفها وتعيد ترتيبها باستخدام الخطاف useFieldArray

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

هل درس «التحقق من المخطط باستخدام Zod» مجاني؟

نعم — نص درس «التحقق من المخطط باستخدام Zod» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «التحقق من المخطط باستخدام Zod»؟

ادمج @hookform/resolvers ومخططات Zod للتحقق من النماذج بأمان نوعي. تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «التحقق من المخطط باستخدام Zod»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. البدء باستخدام React Hook Form
  2. قواعد التحقق ورسائل الخطأ
  3. التحقق من المخطط باستخدام Zod
  4. الحقول الديناميكية باستخدام useFieldArray
← العودة إلى React Academy