1. Giới thiệu


2. Data Validation ở frontend (Next.js/React)


2.1. Tổng quan

Ở phía Frontend, xác thực dữ liệu được thực hiện trực tiếp trên trình duyệt, giúp phát hiện lỗi sớm và cung cấp phản hồi tức thì cho người dùng. Với dự án này thường được thực hiện bằng thư viện zod kết hợp với các thư viện quản lý form như React Hook Form.

2.2. Ví dụ sử dụng Zod với React Hook Form

import { useForm } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
import * as z from "zod";

const schema = z.object({
  id: z.string()
    .regex(/^\\d{8}$/, { message: "Mã sinh viên phải gồm 8 chữ số" })
    .nonempty("Bắt buộc nhập mã sinh viên"),
  fullName: z.string()
    .max(100, "Tên không quá 100 ký tự")
    .nonempty("Bắt buộc nhập họ tên"),
  dateOfBirth: z.coerce.date({ required_error: "Bắt buộc nhập ngày sinh" }),
  // ... các trường khác
});

export default function StudentForm() {
  const { register, handleSubmit, formState: { errors } } = useForm<z.infer<typeof schema>>({
    resolver: zodResolver(schema)
  });

  // ...existing code...
}

Giải thích:

2.3. Ưu điểm

Lưu ý: Validation ở frontend chỉ hỗ trợ, không thay thế cho validation ở backend.