إجراءات النماذج: استبدال مسارات API بعمليات التعديل
اربط Server Actions مباشرةً بإجراءات نماذج HTML لتنفيذ تعديلات النماذج دون تعليمات تمهيدية زائدة، مع إعادة تحقق كاملة
إجراءات النماذج: استبدال مسارات API بعمليات التعديل درس مجاني في React Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.
النمط التقليدي
في تطبيقات Next.js التقليدية، يتطلب إرسال النماذج استخدام مكوّن عميل يحتوي على معالج onSubmit يستدعي fetch() لإرسال البيانات عبر POST إلى مسار API. ينجح هذا النمط، لكنه يتطلب كتابة منطق fetch على جانب العميل ومعالج المسار على جانب الخادم وصيانتهما بشكل منفصل.
إجراءات الخادم تبسّط النماذج
باستخدام إجراءات الخادم، تستبدلون استدعاء fetch ومسار API بدالة واحدة. ويتلقى عنصر النموذج إجراء الخادم باعتباره الخاصية action: <form action={serverAction}>. ويتولى React اعتراض الإرسال واستدعاء الإجراء ببيانات النموذج تلقائيًا.
الوصول إلى حقول النموذج باستخدام FormData
يتلقى إجراء الخادم تلقائيًا كائن FormData باعتباره وسيطه عند تشغيله بواسطة نموذج. ويمكنكم الوصول إلى الحقول الفردية باستخدام formData.get('email') الذي يعيد القيمة كسلسلة نصية. وتتوفر جميع أساليب FormData القياسية، بما في ذلك getAll() لحقول الاختيار المتعدد.
إعادة النتائج من الإجراءات
يمكن لإجراء الخادم إعادة قيمة قابلة للتسلسل ليستفيد منها العميل. فإعادة كائن خطأ مثل { error: 'Email already exists' } أو علامة نجاح مثل { success: true } تتيح للعميل تحديث واجهة المستخدم وفقًا لذلك من دون إعادة تحميل الصفحة بالكامل.
تبقى مكوّنات الصفحة بسيطة
بما أن إجراء النموذج هو إجراء من إجراءات الخادم، فلا يلزم أن يكون مكوّن الصفحة الذي يستضيف النموذج مكوّن عميل. يعرض الخادم النموذج بصيغة HTML ثابتة، ولا تحتاج إلا الأجزاء التفاعلية، مثل عرض الأخطاء، إلى JavaScript على جانب العميل. ويؤدي ذلك إلى تقليل حجم حزمة العميل بدرجة كبيرة.
التحسين التدريجي مضمّن
يعمل النموذج الذي يحتوي على action={serverAction} من دون تفعيل JavaScript. إذ ينفذ المتصفح إرسال POST قياسيًا لنموذج HTML، وينفذ الخادم الإجراء، ثم يعيد الصفحة المحدّثة. ويعني هذا التحسين التدريجي الحقيقي أن النموذج يظل قابلًا للاستخدام بسلاسة في جميع البيئات.
إعادة التحقق من البيانات بعد التعديل
بعد أن يعدّل إجراء الخادم البيانات، يجب تحديث بيانات الصفحة المخزّنة مؤقتًا. ويؤدي استدعاء revalidatePath('/dashboard') داخل الإجراء إلى إبطال ذاكرة التخزين المؤقت في Next.js الخاصة بهذا المسار، مما يجعل الطلب التالي يجلب بيانات جديدة. وهذه هي الطريقة القياسية لإبقاء الصفحات المعروضة على الخادم محدّثة بعد عمليات التعديل.
إبطال ذاكرة التخزين المؤقت بدقة
يوفر revalidateTag('user-data') إبطالًا أكثر دقة لذاكرة التخزين المؤقت مقارنةً بـ revalidatePath. إذ تضعون وسمًا على استدعاءات الجلب باستخدام next: { tags: ['user-data'] }، ثم تبطلون جميع البيانات التي تحمل هذا الوسم دفعة واحدة من داخل إجراء الخادم، بغض النظر عن المسارات التي تعرض تلك البيانات.
إعادة التوجيه بعد الإجراء
يمكن لإجراءات الخادم إعادة توجيه المستخدم إلى صفحة جديدة بعد نجاح عملية التعديل، وذلك باستدعاء redirect('/success') من الوحدة next/navigation. وتُعالج عملية إعادة التوجيه على الخادم، مما يعني أن المتصفح يتلقى استجابة تنقّل صحيحة بدلًا من إعادة توجيه على جانب العميل.
عمليات التعديل غير المعتمدة على النماذج باستخدام startTransition
لا تقتصر إجراءات الخادم على إرسال النماذج. فعند تشغيلها من خلال نقرات الأزرار أو غيرها من المحفزات التي لا تعتمد على النماذج، غلّفوا استدعاء الإجراء داخل startTransition(() => action(arg)). ويحدد ذلك عملية التنقّل باعتبارها انتقالًا، مما يتيح لـ React إبقاء واجهة المستخدم الحالية ظاهرة أثناء تنفيذ الإجراء على الخادم.
التحقق من الصحة داخل الإجراءات
تُعد إجراءات الخادم المكان المناسب لإجراء التحقق من الصحة على الخادم. تحققوا من حقول FormData، وأعيدوا أخطاء التحقق إذا فشلت، ولا تتابعوا عملية التعديل إلا إذا كانت جميع الحقول صالحة. وتتكامل مكتبات مثل Zod جيدًا مع هذا الأسلوب؛ إذ تحللون FormData وفق مخطط ذي أنواع، ثم تعيدون خريطة الأخطاء عند الفشل.
سؤال حول FormData
ما الوسيط الذي يتلقاه إجراء الخادم عند تشغيله نتيجة إرسال نموذج؟
مراجعة الدرس
تستبدل إجراءات الخادم نمط fetch + مسار API المستخدم في عمليات تعديل النماذج. إذ تقبل الخاصية action في النموذج إجراءً من إجراءات الخادم مباشرةً، ويتلقى هذا الإجراء كائن FormData. وتعيد الإجراءات نتائج قابلة للتسلسل لتحديث واجهة المستخدم لدى العميل، وتدعم revalidatePath وrevalidateTag لإبطال ذاكرة التخزين المؤقت، كما تعمل تدريجيًا من دون JavaScript.
الأسئلة الشائعة
هل درس «إجراءات النماذج: استبدال مسارات API بعمليات التعديل» مجاني؟
نعم — نص درس «إجراءات النماذج: استبدال مسارات API بعمليات التعديل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.
ماذا ستتعلم في «إجراءات النماذج: استبدال مسارات API بعمليات التعديل»؟
اربط Server Actions مباشرةً بإجراءات نماذج HTML لتنفيذ تعديلات النماذج دون تعليمات تمهيدية زائدة، مع إعادة تحقق كاملة تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟
لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «إجراءات النماذج: استبدال مسارات API بعمليات التعديل»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟
نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إجراءات الخادم في React 19 وNext.js
- إجراءات النماذج: استبدال مسارات API بعمليات التعديل
- useActionState وuseFormStatus
- التحسين التدريجي باستخدام Server Actions