0Pricing
React Academy · Pelajaran

Menyiapkan React Query & QueryClient

Pasang TanStack Query, bungkus aplikasi dalam QueryClientProvider, dan jalankan useQuery pertama Anda.

Menyiapkan React Query & QueryClient adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 1 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 memasang TanStack Query, menyiapkan QueryClient dan QueryClientProvider, serta menjalankan useQuery pertama untuk mengambil data dari API.

Apa Itu React Query?

TanStack Query (sebelumnya React Query) mengelola state server: mengambil, menyimpan dalam cache, menyinkronkan, dan memperbarui data dari sumber jarak jauh. TanStack Query menggantikan state pemuatan dan error manual serta pengambilan data berbasis useEffect.

Instalasi

Pasang paket inti dan, jika diperlukan, DevTools.
npm install @tanstack/react-query
npm install @tanstack/react-query-devtools --save-dev

Membuat QueryClient

Buat sebuah instance QueryClient untuk menyimpan seluruh cache dan konfigurasi. Teruskan instance tersebut ke QueryClientProvider yang membungkus aplikasi Anda.
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const queryClient = new QueryClient();

createRoot(document.getElementById('root')).render(
  <QueryClientProvider client={queryClient}>
    <App />
  </QueryClientProvider>
);

useQuery Pertama Anda

Panggil useQuery dengan array queryKey dan queryFn yang mengembalikan data. Key tersebut secara unik mengidentifikasi entri yang tersimpan dalam cache.
import { useQuery } from '@tanstack/react-query';

function Posts() {
  const { data, isLoading, isError } = useQuery({
    queryKey: ['posts'],
    queryFn: () => fetch('/api/posts').then(r => r.json()),
  });

  if (isLoading) return <p>Loading...</p>;
  if (isError) return <p>Error!</p>;
  return <ul>{data.map(p => <li key={p.id}>{p.title}</li>)}</ul>;
}

Query Key

Query key berbentuk array. Tambahkan parameter ke key untuk menentukan cakupan entri cache. Key yang berbeda berarti entri cache yang berbeda.
// All posts
useQuery({ queryKey: ['posts'], queryFn: fetchPosts })

// Post with id 5
useQuery({ queryKey: ['posts', 5], queryFn: () => fetchPost(5) })

// Posts filtered by category
useQuery({ queryKey: ['posts', { category: 'react' }], queryFn: /* ... */ })

Status Query

useQuery mengembalikan beberapa properti status: `isLoading`, `isFetching`, `isError`, `isSuccess`, `data`, dan `error`. `isFetching` bernilai true bahkan saat pengambilan ulang berlangsung di latar belakang; `isLoading` hanya bernilai true saat pemuatan pertama.

React Query DevTools

Tambahkan ReactQueryDevtools ke aplikasi Anda dalam mode pengembangan untuk melihat semua entri cache, statusnya, dan kapan terakhir kali data diambil. Fitur ini sangat membantu untuk men-debug.
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';

<QueryClientProvider client={queryClient}>
  <App />
  <ReactQueryDevtools initialIsOpen={false} />
</QueryClientProvider>

Konfigurasi Bawaan

Konfigurasikan nilai bawaan global pada QueryClient: staleTime, gcTime (pengumpulan sampah), jumlah percobaan ulang, dan refetchOnWindowFocus.
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 60_000,     // data is fresh for 60s
      retry: 2,              // retry failed queries twice
      refetchOnWindowFocus: false,
    },
  },
});

Pengambilan Ulang Otomatis

Secara bawaan, React Query mengambil ulang data usang ketika: jendela kembali mendapatkan fokus, komponen dipasang kembali, dan jaringan tersambung kembali. Semua perilaku ini dapat dikonfigurasikan secara terpisah pada setiap query.

Cek Singkat

Apa tujuan array queryKey dalam useQuery?

Ringkasan

Pasang @tanstack/react-query, buat QueryClient, bungkus aplikasi Anda dengan QueryClientProvider, lalu panggil useQuery dengan queryKey dan queryFn. Tambahkan DevTools agar aktivitasnya terlihat. Konfigurasikan nilai bawaan global pada QueryClient.

Selanjutnya

Pelajaran berikutnya: **Caching, Waktu Usang & Pengambilan Ulang di Latar Belakang** — Anda akan mengonfigurasikan staleTime dan gcTime untuk mengatur kapan data diambil ulang.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menyiapkan React Query & QueryClient” gratis?

Ya — teks lengkap “Menyiapkan React Query & QueryClient” 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 “Menyiapkan React Query & QueryClient”?

Pasang TanStack Query, bungkus aplikasi dalam QueryClientProvider, dan jalankan useQuery pertama Anda. 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 1 dari 4.

Berapa lama pelajaran “Menyiapkan React Query & QueryClient” 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