useActionState dan useFormStatus
Gunakan useActionState untuk melacak state yang masih tertunda dan error, serta useFormStatus untuk menonaktifkan tombol kirim selama proses berlangsung.
useActionState dan useFormStatus 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.
Memperkenalkan useActionState
useActionState(action, initialState) adalah kait React 19 yang membungkus Tindakan Server untuk melacak statusnya di antara berbagai pengiriman. Kait ini menerima fungsi tindakan dan nilai status awal, lalu mengembalikan tuple yang dapat Anda gunakan untuk mengendalikan seluruh pengalaman formulir.
Tuple yang Dikembalikan
Kait tersebut mengembalikan [state, formAction, isPending]. state menyimpan nilai terbaru yang dikembalikan oleh tindakan, dimulai dari null atau nilai awal Anda. formAction adalah tindakan terbungkus yang diteruskan ke formulir. isPending bernilai true selama tindakan sedang dijalankan di server.
Melacak Status di antara Pengiriman
Setiap kali formulir dikirim, Tindakan Server dijalankan dan nilai yang dikembalikannya menjadi state baru. Pada render pertama, state sama dengan initialState. Hal ini memudahkan Anda menampilkan antarmuka pengguna yang berbeda, bergantung pada ada tidaknya pengiriman sebelumnya dan hasil yang dikembalikannya.
Menampilkan Kesalahan Validasi Secara Langsung
Jika Tindakan Server mengembalikan { errors: { email: 'Invalid email' } }, Anda dapat menampilkan kesalahan tersebut secara langsung: {state.errors?.email && <p>{state.errors.email}</p>}. Karena statusnya dipertahankan di antara render ulang, pesan kesalahan tetap terlihat sampai pengiriman berikutnya yang berhasil menggantikan status tersebut.
Menampilkan Pesan Keberhasilan
Ketika tindakan mengembalikan { success: true }, komponen dapat menampilkan pesan keberhasilan: {state?.success && <p>Form submitted!</p>}. Formulir dapat disembunyikan atau digantikan oleh pesan keberhasilan secara kondisional berdasarkan nilai status.
Memperkenalkan useFormStatus
useFormStatus() adalah kait yang membaca status tertunda dari elemen <form> leluhur terdekat. Kait ini mengembalikan objek yang mencakup { pending: boolean }. Kait ini harus digunakan di dalam komponen yang merupakan anak formulir—bukan di dalam komponen yang merender formulir itu sendiri.
Alasan Pembatasan Lokasi Diterapkan
Pembatasan bahwa useFormStatus harus digunakan di dalam formulir diterapkan karena kait tersebut membaca konteks formulir dari pohon React di atasnya. Jika dipanggil di komponen yang sama dengan komponen yang merender formulir, kait tersebut akan menjadi saudara formulir, bukan turunannya, sehingga tidak dapat mengakses status formulir.
Membuat Komponen Tombol Kirim
Pola standarnya adalah memisahkan tombol kirim menjadi komponen tersendiri: function SubmitButton() { const { pending } = useFormStatus(); return <button disabled={pending}>Submit</button>; }. Komponen ini kemudian ditempatkan di dalam formulir, sehingga dapat mengakses status tertunda formulir.
Menonaktifkan Tombol Kirim
Menetapkan disabled={pending} pada tombol kirim mencegah pengiriman ganda. Ketika pengguna mengeklik tombol kirim dan Tindakan Server sedang dijalankan, pending bernilai true, sehingga tombol dinonaktifkan dan tidak dapat diklik. Setelah tindakan selesai, pending kembali ke false dan tombol aktif kembali.
Menggabungkan Kedua Kait
Pola pengalaman pengguna formulir yang lengkap menggabungkan kedua kait: useActionState di komponen formulir melacak hasil tindakan dan menyediakan formAction, sedangkan useFormStatus di dalam komponen anak SubmitButton melacak status tertunda. Keduanya menyediakan tampilan kesalahan validasi dan tombol kirim yang responsif.
Antarmuka Optimistis dengan useOptimistic
Untuk pengalaman yang lebih responsif, useOptimistic dipasangkan dengan useActionState. Anda segera memperbarui antarmuka pengguna dengan hasil yang diharapkan sebelum server merespons, lalu menyelaraskannya kembali ketika respons sebenarnya tiba. Pola ini umum digunakan pada tombol suka, daftar tugas, dan interaksi lain yang memerlukan umpan balik cepat.
Lokasi useFormStatus
Di mana useFormStatus harus dipanggil agar berfungsi dengan benar?
Ringkasan Pelajaran
useActionState(action, initialState) mengembalikan [state, formAction, isPending] untuk melacak hasil Tindakan Server. Status tersebut menyimpan nilai yang dikembalikan tindakan, sehingga kesalahan dan keberhasilan dapat ditampilkan secara langsung. useFormStatus() menyediakan { pending } di dalam komponen anak formulir, sehingga tombol kirim dapat merespons dengan baik. Kedua kait tersebut bersama-sama membentuk pengalaman formulir yang lengkap dan aksesibel.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “useActionState dan useFormStatus” gratis?
Ya — teks lengkap “useActionState dan useFormStatus” 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 “useActionState dan useFormStatus”?
Gunakan useActionState untuk melacak state yang masih tertunda dan error, serta useFormStatus untuk menonaktifkan tombol kirim selama proses berlangsung. 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 “useActionState dan useFormStatus” 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
- Server Actions di React 19 dan Next.js
- Form Actions: Menggantikan Rute API untuk Mutasi
- useActionState dan useFormStatus
- Peningkatan Bertahap dengan Server Actions