0Pricing
React Academy · Pelajaran

Hook useSWR: Pengambilan, Pemuatan, dan State Kesalahan

Gunakan useSWR dengan fungsi pengambil kustom dan tangani state pemuatan, kesalahan, serta keberhasilan secara deklaratif.

Hook useSWR: Pengambilan, Pemuatan, dan State Kesalahan adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.

Tanda Tangan useSWR

useSWR(key, fetcher, options) adalah kait utama. key adalah kunci tembolok (biasanya string URL), fetcher adalah fungsi asinkron yang mengembalikan data, dan options adalah objek konfigurasi opsional.

Kait ini mengembalikan objek dengan data, error, isLoading, isValidating, dan fungsi mutate.

Parameter key

Kunci dapat berupa string URL, array [url, params], atau null. Kunci string dipetakan ke permintaan GET sederhana. Kunci array memungkinkan Anda menyertakan variabel seperti userId atau filters ke dalam identitas tembolok.

Meneruskan null menonaktifkan permintaan sepenuhnya, yang berguna untuk pengambilan kondisional ketika data yang diperlukan belum tersedia.

Fungsi fetcher

Pengambil data menerima key (atau kunci array yang diuraikan sebagai argumen) dan harus mengembalikan Promise. Nilai yang diselesaikan menjadi data. Jika fetcher melempar galat, properti error ditetapkan.

Contoh: (url) => fetch(url).then(r => { if (!r.ok) throw new Error(r.status); return r.json(); }).

Status data dan error

data bernilai undefined saat pertama kali memuat dan sama dengan nilai fetcher yang telah diselesaikan setelah berhasil. error bernilai undefined kecuali fetcher melempar galat; dalam hal itu, error berisi objek galat yang dilemparkan.

Periksa if (error) untuk merender pesan galat, dan if (!data) untuk merender kerangka pemuatan, sehingga menyediakan UI cadangan yang jelas.

isLoading dibandingkan isValidating

isLoading bernilai true hanya ketika tidak ada data dalam tembolok dan permintaan sedang berlangsung: pemuatan pertama untuk kunci ini. isValidating bernilai true setiap kali permintaan sedang berlangsung, termasuk validasi ulang di latar belakang ketika data dalam tembolok sudah ada.

Gunakan isLoading untuk layar kerangka; gunakan isValidating untuk indikator pemuatan halus yang menunjukkan penyegaran di latar belakang.

SWRConfig Global

SWRConfig memungkinkan Anda menentukan fungsi pengambil data bawaan, dedupingInterval, refreshInterval, pengendali onError, dan opsi lainnya untuk semua panggilan useSWR dalam turunannya. Hal ini memusatkan konfigurasi sehingga Anda tidak perlu mengulang opsi dalam setiap kait.

Sarang-susun beberapa penyedia SWRConfig untuk menggunakan bawaan yang berbeda pada bagian aplikasi yang berbeda.

Pengambilan Kondisional dengan Kunci Null

Teruskan null sebagai kunci untuk melewati permintaan: useSWR(isLoggedIn ? '/api/user' : null, fetcher). SWR tidak akan mengambil data hingga kunci menjadi nilai yang bukan null.

Pendekatan ini lebih rapi daripada opsi skip di React Query. Peralihan kunci dari null ke string secara otomatis memicu pengambilan pertama.

Pengambilan yang Saling Bergantung

Rangkai kait SWR untuk permintaan yang saling bergantung: const { data: user } = useSWR('/api/me', fetcher) lalu const { data: orders } = useSWR(user ? '/api/orders/' + user.id : null, fetcher). Kait kedua menunggu hingga kait pertama selesai.

Pola ini menghindari rangkaian useEffect dan menjaga dependensi data tetap deklaratif serta mudah dibaca.

Deduplikasi Permintaan dalam Praktik

Jika komponen Header dan Sidebar sama-sama memanggil useSWR('/api/user', fetcher), SWR hanya mengirim satu permintaan dan membagikan hasilnya. Kedua komponen dirender ulang bersama-sama ketika data atau error diperbarui.

Deduplikasi ini berlangsung secara otomatis dalam jendela dedupingInterval (bawaan 2000 md) tanpa konfigurasi tambahan.

Opsi SWR yang Berguna

refreshInterval: 5000 melakukan pemeriksaan setiap 5 detik. refreshWhenHidden: false menghentikan pemeriksaan saat tab tidak terlihat. shouldRetryOnError: false menonaktifkan percobaan ulang otomatis. revalidateOnFocus: false menonaktifkan validasi ulang yang dipicu fokus.

Gabungkan opsi agar sesuai dengan kebutuhan kesegaran data Anda: dasbor sering menggunakan refreshInterval, sedangkan konten statis menetapkan revalidateOnFocus: false.

Penomoran Halaman dengan useSWR

Untuk data yang dibagi menjadi beberapa halaman, sertakan nomor halaman dalam kunci: useSWR(['/api/items', page], fetcher). Mengubah halaman memicu pengambilan baru untuk halaman tersebut sambil menyimpan halaman sebelumnya dalam tembolok.

SWR juga menyediakan useSWRInfinite untuk pola berbasis kursor atau pengguliran tanpa akhir dengan fungsi getKey yang membuat kunci berdasarkan indeks halaman dan data halaman sebelumnya.

Kunci SWR sebagai Null

Apa yang terjadi ketika Anda meneruskan null sebagai kunci ke useSWR?

Ringkasan Pelajaran

useSWR(key, fetcher) mengembalikan data, error, isLoading, dan isValidating. Kunci null menonaktifkan pengambilan untuk permintaan kondisional dan yang saling bergantung. isLoading menunjukkan pemuatan pertama; isValidating menunjukkan permintaan apa pun yang sedang berlangsung. SWRConfig memusatkan bawaan, dan deduplikasi permintaan lintas komponen berlangsung secara otomatis.

Opsi seperti refreshInterval, revalidateOnFocus, dan shouldRetryOnError menyempurnakan perilaku kesegaran data pada setiap kait atau secara global.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Hook useSWR: Pengambilan, Pemuatan, dan State Kesalahan” gratis?

Ya — teks lengkap “Hook useSWR: Pengambilan, Pemuatan, dan State Kesalahan” 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 “Hook useSWR: Pengambilan, Pemuatan, dan State Kesalahan”?

Gunakan useSWR dengan fungsi pengambil kustom dan tangani state pemuatan, kesalahan, serta keberhasilan secara deklaratif. 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 2 dari 4.

Berapa lama pelajaran “Hook useSWR: Pengambilan, Pemuatan, dan State Kesalahan” 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. Konsep Inti SWR: Stale-While-Revalidate
  2. Hook useSWR: Pengambilan, Pemuatan, dan State Kesalahan
  3. Mutasi dan Pembaruan Optimistis dengan SWR
  4. SWR vs React Query: Memilih Alat yang Tepat
← Kembali ke React Academy