Atom Turunan dan Atom Asinkron
Komposisikan atom turunan dari atom lain dan buat atom asinkron yang terintegrasi dengan Suspense.
Atom Turunan dan Atom Asinkron 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.
Atom Turunan Hanya-Baca
Buat atom turunan dengan meneruskan fungsi pengambil: const doubleAtom = atom(get => get(countAtom) * 2). Atom ini tidak memiliki nilai tersimpan; atom ini menghitung ulang setiap kali countAtom berubah.
Atom turunan selalu diperbarui tanpa sinkronisasi manual. Atom ini merupakan padanan Jotai untuk properti terhitung.
Pelacakan Dependensi Otomatis
Jotai melacak atom mana yang diakses di dalam fungsi pengambil dan secara otomatis mengevaluasi ulang atom turunan ketika salah satunya berubah. Anda tidak perlu mendeklarasikan dependensi secara eksplisit.
Jika fungsi pengambil memanggil get(atomA) dan get(atomB), atom turunan akan diperbarui setiap kali atomA atau atomB berubah.
Atom Turunan yang Dapat Ditulis
Atom turunan yang dapat ditulis memiliki fungsi pengambil dan fungsi penyetel: atom(get => get(baseAtom).toUpperCase(), (get, set, newValue) => set(baseAtom, newValue.toLowerCase())). Pembacaan menghasilkan nilai yang diubah; penulisan mengubah nilai lalu menyimpannya kembali.
Pola ini menerapkan transformasi data dua arah tanpa mengekspos atom dasar secara langsung.
Atom Asinkron dengan Promise
Fungsi pengambil dapat bersifat asinkron: const userAtom = atom(async get => { const id = get(userIdAtom); return await fetchUser(id); }). Jotai secara bawaan menerima Promise dari fungsi pengambil atom.
Ketika userIdAtom berubah, Jotai secara otomatis menjalankan kembali fungsi pengambil asinkron tersebut dan komponen yang menggunakannya ditangguhkan selama pengambilan data.
Atom Asinkron dan React Suspense
Atom asinkron terintegrasi dengan React Suspense secara mulus. Bungkus komponen yang menggunakannya dalam batas Suspense dengan tampilan cadangan. Komponen ditangguhkan saat Promise masih menunggu dan dirender ketika Promise selesai.
Hal ini menghilangkan kebutuhan untuk mengelola status pemuatan secara manual dalam komponen: tidak ada penanda isLoading dan tidak ada useEffect untuk mengambil data.
loadable: Menonaktifkan Suspense
Impor loadable dari jotai/utils. Bungkus atom asinkron: const loadableUserAtom = loadable(userAtom). Komponen yang membaca loadableUserAtom menerima {state: 'loading'}, {state: 'hasData', data: user}, atau {state: 'hasError', error} tanpa mengalami penangguhan.
Gunakan loadable ketika Anda perlu menampilkan status pemuatan khusus secara langsung, alih-alih mengandalkan batas Suspense.
Mengatur Ulang Atom
Utilitas atomWithReset dari jotai/utils membuat atom yang dapat diatur ulang ke nilai awalnya menggunakan simbol RESET. Cara ini lebih bersih daripada melacak dan menerapkan kembali nilai awal secara manual.
Dalam formulir, atur ulang semua atom bidang saat formulir dikirim atau dibatalkan dengan memanggil setiap fungsi penyetel menggunakan RESET dalam satu penangan.
Merangkai Atom
Atom turunan dapat membaca beberapa atom lain: const summaryAtom = atom(get => ({ user: get(userAtom), settings: get(settingsAtom), count: get(countAtom) })). Ini membuat satu referensi stabil yang diperbarui ketika dependensi mana pun berubah.
Komponen yang hanya memerlukan ringkasan cukup berlangganan ke summaryAtom, bukan ke ketiga atom secara terpisah.
Atom Bersyarat
Atom turunan dapat membaca atom yang berbeda secara bersyarat: const activeDataAtom = atom(get => get(modeAtom) === 'A' ? get(dataAAtom) : get(dataBAtom)). Saat modeAtom berganti, atom turunan tersebut secara otomatis berganti sumber datanya.
Jotai kembali berlangganan ke atom yang benar pada setiap evaluasi, sehingga tidak ada data lama dari cabang yang tidak aktif.
Penanganan Kesalahan Atom Asinkron
Jika fungsi pengambil atom asinkron melempar atau menolak, kesalahan diteruskan ke batas kesalahan React terdekat ketika digunakan bersama Suspense. Dengan loadable, kesalahan muncul di bidang state.error untuk ditangani langsung.
Selalu pasangkan atom asinkron dengan ErrorBoundary atau pembungkus loadable dalam kode produksi.
Kinerja Atom Turunan
Atom turunan menyimpan hasil terakhirnya dalam memori. Jika semua atom dependensi mengembalikan nilai yang sama seperti pada evaluasi sebelumnya, atom turunan mengembalikan referensi yang sama dan tidak terjadi render ulang pada komponen hilir.
Untuk perhitungan turunan yang mahal, seperti transformasi larik besar, penyimpanan hasil ini memberikan manfaat kinerja yang signifikan tanpa konfigurasi tambahan.
Integrasi Atom Asinkron dan Suspense
Apa yang terjadi pada komponen yang membaca atom asinkron saat Promise-nya masih menunggu?
Ringkasan Pelajaran
Atom turunan menghitung nilai dari atom lain menggunakan fungsi pengambil dengan pelacakan dependensi otomatis. Atom asinkron menggunakan fungsi pengambil asinkron dan secara bawaan terintegrasi dengan React Suspense; gunakan loadable dari jotai/utils untuk menonaktifkan Suspense dan menangani status pemuatan atau kesalahan secara langsung.
Atom turunan yang dapat ditulis memungkinkan transformasi dua arah, sedangkan atom bersyarat secara dinamis mengganti sumber data berdasarkan nilai atom lain.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Atom Turunan dan Atom Asinkron” gratis?
Ya — teks lengkap “Atom Turunan dan Atom Asinkron” 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 “Atom Turunan dan Atom Asinkron”?
Komposisikan atom turunan dari atom lain dan buat atom asinkron yang terintegrasi dengan Suspense. 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 “Atom Turunan dan Atom Asinkron” 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
- Atom: Unit State dalam Jotai
- Membaca dan Menulis Atom dengan useAtom
- Atom Turunan dan Atom Asinkron
- Jotai vs Zustand vs Context: Kapan Menggunakan Masing-Masing