useActionState dan useFormStatus
Gunakan useActionState untuk menjejaki keadaan tertangguh dan ralat, serta useFormStatus untuk melumpuhkan butang hantar semasa proses berlangsung.
useActionState dan useFormStatus ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.
Memperkenalkan useActionState
useActionState(action, initialState) ialah cangkuk React 19 yang membungkus Tindakan Pelayan untuk menjejaki keadaannya merentas penghantaran. Cangkuk ini menerima fungsi tindakan dan nilai keadaan awal, kemudian mengembalikan tupel yang boleh Anda gunakan untuk mengendalikan keseluruhan pengalaman borang.
Tupel Pulangan
Cangkuk ini mengembalikan [state, formAction, isPending]. state menyimpan nilai pulangan tindakan yang paling terkini, bermula dengan null atau nilai awal Anda. formAction ialah tindakan yang dibungkus untuk dihantar kepada borang. isPending bernilai true semasa tindakan sedang dilaksanakan pada pelayan.
Menjejaki Keadaan antara Penghantaran
Setiap kali borang dihantar, Tindakan Pelayan dijalankan dan nilai pulangannya menjadi state baharu. Pada paparan pertama, state sama dengan initialState. Hal ini memudahkan Anda memaparkan antara muka yang berbeza bergantung pada sama ada terdapat penghantaran terdahulu dan hasil yang dikembalikannya.
Memaparkan Ralat Pengesahan Sebaris
Jika Tindakan Pelayan mengembalikan { errors: { email: 'Invalid email' } }, Anda boleh memaparkan ralat secara sebaris: {state.errors?.email && <p>{state.errors.email}</p>}. Oleh sebab keadaan dikekalkan merentas pemaparan semula, mesej ralat kekal kelihatan sehingga penghantaran seterusnya yang berjaya menggantikan keadaan tersebut.
Memaparkan Mesej Kejayaan
Apabila tindakan mengembalikan { success: true }, komponen boleh memaparkan mesej kejayaan: {state?.success && <p>Form submitted!</p>}. Borang boleh disembunyikan secara bersyarat atau digantikan dengan mesej kejayaan berdasarkan nilai keadaan.
Memperkenalkan useFormStatus
useFormStatus() ialah cangkuk yang membaca keadaan menunggu bagi elemen <form> leluhur terdekat. Cangkuk ini mengembalikan objek yang merangkumi { pending: boolean }. Cangkuk ini mesti digunakan di dalam komponen yang merupakan anak kepada borang — bukan dalam komponen yang memaparkan borang itu sendiri.
Sebab Sekatan Lokasi Wujud
Sekatan bahawa useFormStatus mesti digunakan di dalam borang wujud kerana cangkuk tersebut membaca konteks borang daripada pepohon React di atasnya. Jika dipanggil dalam komponen yang sama yang memaparkan borang, cangkuk itu akan menjadi saudara kepada borang, bukannya keturunan, dan tidak akan mempunyai akses kepada keadaan borang.
Mencipta Komponen Butang Hantar
Corak standardnya ialah mengasingkan butang hantar ke dalam komponennya sendiri: function SubmitButton() { const { pending } = useFormStatus(); return <button disabled={pending}>Submit</button>; }. Komponen ini kemudiannya diletakkan di dalam borang, supaya komponen tersebut mempunyai akses kepada keadaan menunggu borang.
Melumpuhkan Butang Hantar
Menetapkan disabled={pending} pada butang hantar menghalang penghantaran berganda. Apabila pengguna mengklik hantar dan Tindakan Pelayan sedang dilaksanakan, pending bernilai true, lalu butang menjadi dilumpuhkan dan tidak boleh diklik. Apabila tindakan selesai, pending kembali kepada false dan butang diaktifkan semula.
Menggabungkan Kedua-dua Cangkuk
Corak pengalaman pengguna borang yang lengkap menggabungkan kedua-dua cangkuk: useActionState dalam komponen borang menjejaki hasil tindakan dan menyediakan formAction, manakala useFormStatus di dalam komponen anak SubmitButton menjejaki keadaan menunggu. Bersama-sama, kedua-duanya menyediakan paparan ralat yang disahkan dan butang hantar yang responsif.
Antara Muka Optimistik dengan useOptimistic
Untuk pengalaman yang lebih responsif, useOptimistic digandingkan dengan useActionState. Anda mengemas kini antara muka dengan hasil yang dijangka serta-merta sebelum pelayan memberikan respons, kemudian menyelaraskannya semula apabila respons sebenar tiba. Corak ini biasa digunakan dalam butang suka, senarai tugasan dan interaksi lain yang memerlukan maklum balas pantas.
Lokasi useFormStatus
Di manakah useFormStatus mesti dipanggil supaya berfungsi dengan betul?
Ringkasan Pelajaran
useActionState(action, initialState) mengembalikan [state, formAction, isPending] untuk menjejaki hasil Tindakan Pelayan. Keadaan menyimpan nilai pulangan tindakan, sekali gus membolehkan paparan ralat dan kejayaan secara sebaris. useFormStatus() menyediakan { pending } di dalam komponen anak borang, lalu membolehkan butang hantar yang responsif. Kedua-dua cangkuk ini bersama-sama menghasilkan pengalaman borang yang lengkap dan mudah diakses.
Pelajari React dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 88
- Pelajaran
- 324
Soalan Lazim
Adakah pelajaran “useActionState dan useFormStatus” percuma?
Ya — teks penuh “useActionState dan useFormStatus” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “useActionState dan useFormStatus”?
Gunakan useActionState untuk menjejaki keadaan tertangguh dan ralat, serta useFormStatus untuk melumpuhkan butang hantar semasa proses berlangsung. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan React Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “useActionState dan useFormStatus” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?
Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Tindakan Pelayan dalam React 19 dan Next.js
- Tindakan Borang: Menggantikan Laluan API untuk Mutasi
- useActionState dan useFormStatus
- Peningkatan Berperingkat dengan Tindakan Pelayan