'use server'
توجيه دوال الخادم (Server Functions) 'use server'
'use server' يعلّم دالة أو ملف كامل إنها تُنفَّذ على الخادم فقط — الأساس اللي تُبنى عليه Server Actions.
يُستخدم بشكلين: أعلى ملف كامل (كل الدوال المُصدَّرة تصير Server Functions)، أو inline أعلى دالة واحدة داخل مكوّن. الشكل الثاني مفيد لدوال قصيرة مرتبطة بنموذج (form) معيّن.
أي Server Function تُستدعى من العميل تصير فعليًا طلب POST للمسار اللي عرّفتها فيه — فلو استثنيت مسارًا بـ matcher الوسيط (Proxy)، احتمال يفوتك تأمين الدوال اللي تُستدعى منه.
الصياغة
'use server'
export async function actionName(data: FormData) {
// ...
}📄 مثال
'use server';
import { db } from '@/lib/db';
import { auth } from '@/lib/auth';
export async function createUser(data: { name: string; email: string }) {
const session = await auth();
if (!session?.user) throw new Error('Unauthorized');
const user = await db.user.create({ data });
return { id: user.id, name: user.name };
}أهم النقاط
| العنصر | الوظيفة |
|---|---|
| أعلى ملف | كل الدوال المُصدَّرة من الملف تصير Server Functions |
| أعلى دالة (inline) | دالة واحدة فقط تصير Server Function — مفيد جوّه مكوّنات |
💡 نصائح عملية
- تحقّق من الجلسة والصلاحيات جوّه الدالة نفسها دايمًا — لا تعتمد على إخفاء الزر بالواجهة فقط
- أرجع فقط البيانات اللي تحتاجها الواجهة، لا سجلات قاعدة بيانات خام كاملة
⚠️ أخطاء شائعة
- الاعتماد على أن الزر مخفي بالواجهة كحماية كافية — أي شخص يقدر يستدعي الدالة مباشرة
- استخدام 'use server' بمكوّن كامل بدل دالة محدّدة — يجعل كل شي بالملف Server Function بدون داعٍ
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار NEXTJS الكامل بالعربي.