0Pricing
React Academy · Pelajaran

Field Dinamis dengan useFieldArray

Tambahkan, hapus, dan urutkan ulang field formulir dinamis menggunakan hook useFieldArray.

Field Dinamis dengan useFieldArray adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 4 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 menggunakan pengait useFieldArray milik React Hook Form untuk membuat formulir dengan daftar kolom dinamis — seperti menambahkan, menghapus, dan mengurutkan ulang item.

Apa Itu useFieldArray?

useFieldArray mengelola larik kolom di dalam React Hook Form. Fitur ini menyediakan metode append, prepend, remove, swap, move, dan insert untuk memanipulasi daftar kolom.
import { useFieldArray } from 'react-hook-form';

const { fields, append, remove } = useFieldArray({
  control,
  name: 'phoneNumbers',
});

Penyiapan: control dari useForm

useFieldArray memerlukan objek `control` dari useForm. Ambil objek tersebut dengan destrukturisasi bersama register dan handleSubmit.
const { register, control, handleSubmit } = useForm({
  defaultValues: { phoneNumbers: [{ value: '' }] },
});

Merender Kolom

Lakukan pemetaan pada `fields` untuk merender setiap item. Gunakan `id` milik kolom sebagai kunci React, bukan indeksnya. Daftarkan setiap kolom menggunakan sintaks jalur larik.
return fields.map((field, index) => (
  <div key={field.id}>
    <input
      {...register(`phoneNumbers.${index}.value`)}
    />
    <button onClick={() => remove(index)}>Remove</button>
  </div>
));

Menambahkan Kolom Baru

Panggil append() dengan objek nilai bawaan untuk menambahkan kolom baru di akhir daftar. Formulir akan mendaftarkannya secara otomatis.
<button onClick={() => append({ value: '' })}>
  Add Phone Number
</button>

Menghapus Kolom

Panggil remove(index) untuk menghapus kolom pada posisi tertentu. Semua kolom setelahnya bergeser ke bawah dan pendaftarannya diperbarui secara otomatis.
<button onClick={() => remove(index)}>Delete</button>

Validasi Jumlah Minimum Kolom

Anda dapat memvalidasi panjang larik dalam skema Zod dengan .min() untuk memastikan setidaknya ada satu kolom.
const schema = z.object({
  emails: z.array(z.object({ value: z.string().email() }))
           .min(1, 'At least one email required'),
});

Menukar dan Memindahkan Kolom

Gunakan `swap(indexA, indexB)` untuk menukar dua kolom, atau `move(from, to)` untuk memindahkan posisi sebuah kolom. Keduanya digunakan untuk membuat daftar kolom yang dapat diurutkan dengan seret dan lepas.
swap(0, 2); // swap first and third items
move(3, 0); // move item at index 3 to the top

useFieldArray Bertingkat

Anda dapat menempatkan useFieldArray di dalam useFieldArray lain untuk membuat formulir dinamis bertingkat (misalnya faktur dengan rincian baris, yang masing-masing memiliki item turunan).

Mengirim Data Larik

Saat dikirim, handleSubmit meneruskan seluruh larik sebagai bagian dari objek data. Akses data tersebut di data.phoneNumbers — sebuah larik objek yang sesuai dengan struktur kolom.
const onSubmit = (data) => {
  console.log(data.phoneNumbers);
  // [{ value: '555-1234' }, { value: '555-5678' }]
};

Pemeriksaan Singkat

Mengapa Anda harus menggunakan field.id, bukan indeks larik, sebagai kunci React saat merender kolom useFieldArray?

Ringkasan

useFieldArray menyediakan larik fields serta metode append/remove/swap/move. Gunakan field.id sebagai kunci React, lakukan pendaftaran dengan sintaks 'fieldName.index.subfield', dan validasi larik dengan min/max Zod.

Kursus Selesai

Selamat! Anda telah menyelesaikan **Mengelola Formulir dengan React Hook Form**. Kini Anda dapat membuat formulir berkinerja tinggi dengan RHF, menerapkan validasi skema Zod, dan membuat larik kolom dinamis.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Field Dinamis dengan useFieldArray” gratis?

Ya — teks lengkap “Field Dinamis dengan useFieldArray” 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 “Field Dinamis dengan useFieldArray”?

Tambahkan, hapus, dan urutkan ulang field formulir dinamis menggunakan hook useFieldArray. 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 4 dari 4.

Berapa lama pelajaran “Field Dinamis dengan useFieldArray” 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