0Pricing
React Academy · درس

الحقول الديناميكية باستخدام useFieldArray

أضف حقول النماذج الديناميكية وأزلها وأعد ترتيبها باستخدام hook ‏useFieldArray.

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

مرحبًا

في هذا الدرس، ستستخدم الخطاف useFieldArray من React Hook Form لإنشاء نماذج تحتوي على قوائم ديناميكية من الحقول، مثل إضافة العناصر وحذفها وإعادة ترتيبها

ما هو useFieldArray؟

يدير useFieldArray مصفوفة من الحقول داخل React Hook Form. ويوفّر أساليب append وprepend وremove وswap وmove وinsert لمعالجة قائمة الحقول
import { useFieldArray } from 'react-hook-form';

const { fields, append, remove } = useFieldArray({
  control,
  name: 'phoneNumbers',
});

الإعداد: control من useForm

يتطلب useFieldArray الكائن `control` من useForm. فكّك هذا الكائن مع register وhandleSubmit
const { register, control, handleSubmit } = useForm({
  defaultValues: { phoneNumbers: [{ value: '' }] },
});

عرض الحقول

كرّر على `fields` لعرض كل عنصر. استخدم `id` الخاص بالحقل كمفتاح React، وليس الفهرس. وسجّل كل حقل باستخدام صيغة مسار المصفوفة
return fields.map((field, index) => (
  <div key={field.id}>
    <input
      {...register(`phoneNumbers.${index}.value`)}
    />
    <button onClick={() => remove(index)}>Remove</button>
  </div>
));

إضافة حقول جديدة

استدعِ append() مع كائن يحتوي على قيمة افتراضية لإضافة حقل جديد إلى نهاية القائمة. ويسجّله النموذج تلقائيًا
<button onClick={() => append({ value: '' })}>
  Add Phone Number
</button>

إزالة الحقول

استدعِ remove(index) لحذف حقل في موضع محدد. وستنتقل جميع الحقول اللاحقة إلى موضع أدنى، كما تُحدَّث تسجيلاتها تلقائيًا
<button onClick={() => remove(index)}>Delete</button>

التحقق من الحد الأدنى للحقول

يمكنك التحقق من طول المصفوفة في مخطط Zod باستخدام ‎.min()‎ لضمان وجود حقل واحد على الأقل
const schema = z.object({
  emails: z.array(z.object({ value: z.string().email() }))
           .min(1, 'At least one email required'),
});

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

استخدم `swap(indexA, indexB)` لتبديل حقلين، أو `move(from, to)` لنقل حقل إلى موضع آخر. وتُستخدم هذه الأساليب لإنشاء قوائم حقول قابلة للترتيب بالسحب والإفلات
swap(0, 2); // swap first and third items
move(3, 0); // move item at index 3 to the top

تداخل useFieldArray

يمكنك تداخل useFieldArray داخل useFieldArray آخر لإنشاء نماذج ديناميكية متعددة المستويات، مثل فاتورة تحتوي على بنود، ويحتوي كل بند منها على عناصر فرعية

إرسال بيانات المصفوفة

عند الإرسال، يمرّر handleSubmit المصفوفة كاملة باعتبارها جزءًا من كائن البيانات. ويمكنك الوصول إليها عبر data.phoneNumbers، وهي مصفوفة من الكائنات المطابقة لبنية الحقول
const onSubmit = (data) => {
  console.log(data.phoneNumbers);
  // [{ value: '555-1234' }, { value: '555-5678' }]
};

تحقق سريع

لماذا ينبغي استخدام field.id، وليس فهرس المصفوفة، كمفتاح React عند عرض حقول useFieldArray؟

مراجعة

يوفّر لك useFieldArray مصفوفة fields وأساليب append وremove وswap وmove. استخدم field.id كمفتاح React، وسجّل الحقول باستخدام صيغة 'fieldName.index.subfield'، وتحقق من المصفوفات باستخدام ‎min/max‎ في Zod

اكتملت الدورة

تهانينا! لقد أتممت **إدارة النماذج باستخدام React Hook Form**. يمكنك الآن إنشاء نماذج عالية الأداء باستخدام RHF، وتطبيق التحقق باستخدام مخططات Zod، وإنشاء مصفوفات حقول ديناميكية

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

هل درس «الحقول الديناميكية باستخدام useFieldArray» مجاني؟

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

ماذا ستتعلم في «الحقول الديناميكية باستخدام useFieldArray»؟

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

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

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

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

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

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

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

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

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