0Pricing
React Academy · Pelajaran

Validasi Skema dengan Zod

Integrasikan @hookform/resolvers dan skema Zod untuk validasi formulir yang aman terhadap tipe.

Validasi Skema dengan Zod adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Selamat Datang

Dalam pelajaran ini, Anda akan mengintegrasikan React Hook Form dengan skema Zod melalui @hookform/resolvers untuk mendapatkan validasi yang aman secara tipe, dengan satu sumber kebenaran untuk formulir dan tipe TypeScript.

Mengapa Validasi Skema?

Mendefinisikan aturan validasi secara sebaris dalam register() menjadi panjang dan sulit digunakan kembali. Skema Zod mendefinisikan SEMUA validasi di satu tempat, menyimpulkan tipe TypeScript secara otomatis, dan dapat digunakan bersama oleh frontend serta backend.

Pemasangan

Pasang Zod dan paket penyelesai RHF.
npm install zod @hookform/resolvers

Mendefinisikan Skema Zod

Gunakan z.object() untuk mendefinisikan bentuk formulir Anda. Setiap kolom menggunakan tipe Zod dengan metode validasi yang dirangkai.
import { z } from 'zod';

const loginSchema = z.object({
  email: z.string().email('Invalid email'),
  password: z.string().min(8, 'At least 8 characters'),
});

Menyimpulkan Tipe TypeScript

Gunakan z.infer untuk mendapatkan tipe TypeScript dari skema Zod secara otomatis. Anda tidak memerlukan interface terpisah.
type LoginForm = z.infer<typeof loginSchema>;
// { email: string; password: string }

Menghubungkan ke useForm melalui Penyelesai

Berikan zodResolver(schema) ke opsi resolver milik useForm. RHF akan menggunakan Zod untuk memvalidasi formulir, bukan aturan sebaris.
import { zodResolver } from '@hookform/resolvers/zod';

const { register, handleSubmit, formState } = useForm<LoginForm>({
  resolver: zodResolver(loginSchema),
});

Tanpa Aturan Sebaris

Dengan zodResolver, Anda tidak perlu lagi memberikan aturan ke register(). Cukup panggil register('fieldName') tanpa argumen kedua. Zod menangani semua validasi.
<input {...register('email')} />
{errors.email && <p>{errors.email.message}</p>}

Validasi Zod Kompleks

Zod mendukung validasi yang kuat: url(), uuid(), regex(), refine() untuk logika khusus, dan superRefine() untuk validasi lintas kolom.
const schema = z.object({
  url: z.string().url('Must be a valid URL'),
  confirmPassword: z.string(),
}).refine(
  data => data.password === data.confirmPassword,
  { message: 'Passwords must match', path: ['confirmPassword'] }
);

Validasi Lintas Kolom

refine() atau superRefine() milik Zod dapat mengakses semua nilai kolom, sehingga memungkinkan aturan lintas kolom seperti 'tanggal akhir harus setelah tanggal awal'.
const schema = z.object({
  start: z.string(),
  end: z.string(),
}).refine(d => d.end > d.start, {
  message: 'End must be after start',
  path: ['end'],
});

Berbagi Skema dengan Sisi Server

Dalam proyek TypeScript yang mencakup sisi klien dan sisi server, ekspor skema Zod dari modul bersama. Gunakan pada formulir React AND pengendali API Node.js/Next.js Anda agar validasinya konsisten.
// shared/schemas.ts
export const loginSchema = z.object({ ... });

// frontend — import and use as resolver
// backend — import and call .parse() on request body

Pemeriksaan Singkat

Apa keuntungan utama menggunakan z.infer sebagai tipe formulir di TypeScript?

Ringkasan

Definisikan skema Zod, simpulkan tipe TypeScript dengan z.infer, teruskan zodResolver ke useForm, lalu hapus aturan validasi sebaris. Gunakan refine() untuk validasi lintas kolom dan bagikan skema antara sisi klien dan sisi server.

Berikutnya

Pelajaran berikutnya: **Kolom Dinamis dengan useFieldArray** — Anda akan menambahkan, menghapus, dan mengurutkan ulang kolom formulir dinamis menggunakan pengait useFieldArray.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Validasi Skema dengan Zod” gratis?

Ya — teks lengkap “Validasi Skema dengan Zod” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Validasi Skema dengan Zod”?

Integrasikan @hookform/resolvers dan skema Zod untuk validasi formulir yang aman terhadap tipe. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Validasi Skema dengan Zod” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Memulai dengan React Hook Form
  2. Aturan Validasi & Pesan Kesalahan
  3. Validasi Skema dengan Zod
  4. Field Dinamis dengan useFieldArray
← Kembali ke React Academy