| name | nextjs-server-actions |
| description | null |
Server Actions
Category: nextjs · Status: 🟢 Active
When to use
Khi mutate data từ form/UI mà không cần tự tạo API route, dùng Server Action.
Steps
- Đánh dấu
'use server' ở đầu file action hoặc trong function.
- Validate input bằng zod trước khi xử lý; không tin dữ liệu client.
- Thực hiện mutation (DB/API) phía server.
- Gọi
revalidatePath/revalidateTag để làm mới cache liên quan.
- Trả về kết quả/lỗi serializable; dùng
redirect khi cần điều hướng.
Template
'use server';
import { z } from 'zod';
import { revalidatePath } from 'next/cache';
const schema = z.object({ title: z.string().min(1) });
export async function createPost(formData: FormData) {
const data = schema.parse({ title: formData.get('title') });
await db.post.create(data);
revalidatePath('/posts');
}
Example
Good: 'use server', validate zod, mutation, revalidatePath sau khi xong.
Avoid: Bỏ validate, không revalidate, ném object không serializable.
Checklist