0Pricing
React Academy · Pelajaran

Penyimpanan Tembolok, Waktu Kedaluwarsa & Pengambilan Ulang di Latar Belakang

Konfigurasikan staleTime dan gcTime untuk mengatur kapan data diambil ulang dari server.

Penyimpanan Tembolok, Waktu Kedaluwarsa & Pengambilan Ulang di Latar Belakang 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.

Selamat Datang

Dalam pelajaran ini, Anda akan mengonfigurasikan staleTime dan gcTime untuk mengatur berapa lama React Query mempertahankan kesegaran data dan berapa lama data cache disimpan di memori.

Data Segar vs Usang

React Query melacak apakah data dalam cache masih 'segar' atau 'usang'. Data yang segar langsung dikembalikan tanpa permintaan jaringan. Data yang usang juga langsung dikembalikan, tetapi pengambilan ulang di latar belakang dimulai untuk memperbaruinya.

staleTime

staleTime menentukan berapa lama (dalam milidetik) data tetap segar. Nilai bawaannya adalah 0 (langsung dianggap usang). Menetapkan nilai 60000 berarti data yang diambil dalam satu menit terakhir dikembalikan tanpa pengambilan ulang di latar belakang.
useQuery({
  queryKey: ['users'],
  queryFn: fetchUsers,
  staleTime: 60_000, // fresh for 60 seconds
})

Menetapkan staleTime untuk Data Statis

Untuk data yang jarang berubah (misalnya daftar negara atau opsi konfigurasi), tetapkan staleTime yang tinggi. Untuk data langsung (misalnya harga saham), pertahankan nilai bawaan 0 dan aktifkan polling.
// Effectively never stale — reload only on explicit invalidation
useQuery({ queryKey: ['countries'], queryFn: fetchCountries,
  staleTime: Infinity })

gcTime (Pengumpulan Sampah)

gcTime (sebelumnya cacheTime) menentukan berapa lama data cache yang UNUSED tetap berada di memori sebelum dikumpulkan oleh pengumpulan sampah. Nilai bawaannya adalah 5 menit. Bahkan setelah gcTime tercapai, React Query dapat segera mengambil ulang data jika subscriber baru dipasang.
useQuery({
  queryKey: ['products'],
  queryFn: fetchProducts,
  gcTime: 10 * 60 * 1000, // keep in memory for 10 minutes
})

staleTime vs gcTime

staleTime mengatur WHEN pengambilan ulang dilakukan (kesegaran data). gcTime mengatur WHEN data cache dibuang dari memori. staleTime <= gcTime adalah hubungan yang umum digunakan.

Indikator Pengambilan Ulang di Latar Belakang

Saat React Query mengambil ulang data di latar belakang, `isFetching` bernilai true meskipun `isLoading` bernilai false (data sudah tersimpan dalam cache). Gunakan isFetching untuk menampilkan pemintal yang tidak terlalu mencolok.
const { data, isLoading, isFetching } = useQuery({ /* ... */ });

return (
  <>
    {isLoading ? <Spinner /> : <DataView data={data} />}
    {isFetching && !isLoading && <RefreshIndicator />}
  </>
);

refetchOnWindowFocus

Secara bawaan, React Query mengambil ulang query yang usang saat pengguna kembali ke tab tersebut. Nonaktifkan perilaku ini untuk data yang jarang diperbarui.
useQuery({
  queryKey: ['settings'],
  queryFn: fetchSettings,
  refetchOnWindowFocus: false,
})

refetchInterval untuk Polling

Tetapkan `refetchInterval` untuk mengambil ulang query secara otomatis berdasarkan penghitung waktu. Fitur ini berguna untuk dasbor data langsung.
useQuery({
  queryKey: ['liveStats'],
  queryFn: fetchStats,
  refetchInterval: 5000, // every 5 seconds
})

Data Placeholder

Gunakan `placeholderData` untuk menampilkan data sebelumnya saat pengambilan ulang berlangsung, sehingga mencegah pergeseran tata letak. Opsi keepPreviousData memudahkan penerapannya untuk paginasi.
import { keepPreviousData } from '@tanstack/react-query';

useQuery({
  queryKey: ['posts', page],
  queryFn: () => fetchPage(page),
  placeholderData: keepPreviousData,
})

Cek Singkat

Apa hasil dari menetapkan staleTime: Infinity pada sebuah query?

Ringkasan

staleTime mengatur kesegaran—berapa lama sebelum data memicu pengambilan ulang di latar belakang. gcTime mengatur memori—berapa lama data yang tidak digunakan tetap berada dalam cache. isFetching menandakan pengambilan ulang di latar belakang. Gunakan placeholderData untuk paginasi yang mulus.

Selanjutnya

Pelajaran berikutnya: **Mutasi dengan useMutation** — Anda akan mengirim data ke API dan membatalkan validasi query saat berhasil.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Penyimpanan Tembolok, Waktu Kedaluwarsa & Pengambilan Ulang di Latar Belakang” gratis?

Ya — teks lengkap “Penyimpanan Tembolok, Waktu Kedaluwarsa & Pengambilan Ulang di Latar Belakang” 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 “Penyimpanan Tembolok, Waktu Kedaluwarsa & Pengambilan Ulang di Latar Belakang”?

Konfigurasikan staleTime dan gcTime untuk mengatur kapan data diambil ulang dari server. 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 “Penyimpanan Tembolok, Waktu Kedaluwarsa & Pengambilan Ulang di Latar Belakang” 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. Menyiapkan React Query & QueryClient
  2. Penyimpanan Tembolok, Waktu Kedaluwarsa & Pengambilan Ulang di Latar Belakang
  3. Mutasi dengan useMutation
  4. Gulir Tak Terbatas & Penomoran Halaman dengan useInfiniteQuery
← Kembali ke React Academy