0Pricing
React Academy · Pelajaran

Hook use() untuk Sumber Daya Asinkron

Baca promise dan context saat render dengan hook use() di React 19.

Hook use() untuk Sumber Daya Asinkron 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 menggunakan hook use() dari React 19 untuk membaca Promise dan nilai konteks secara langsung di dalam fungsi render, sehingga akses data asinkron menjadi lebih sederhana.

Apa Itu use()?

use() adalah hook React 19 yang membaca sebuah resource — baik Promise maupun Context — secara sinkron di dalam fungsi render. Jika Promise masih pending, komponen akan ditangguhkan dan batas Suspense terdekat akan menampilkan tampilan cadangannya.
import { use } from 'react';

function UserProfile({ userPromise }) {
  const user = use(userPromise); // suspends if pending
  return <h1>{user.name}</h1>;
}

Meneruskan Promise sebagai Props

Pola yang umum di React 19: Komponen Server membuat Promise (misalnya kueri basis data), meneruskannya ke Komponen Klien, lalu Komponen Klien membacanya dengan use(). Batas Suspense dapat berada di mana saja di atasnya.
// Server Component
export default function Page() {
  const userPromise = fetchUser(1); // NOT awaited
  return (
    <Suspense fallback={<Spinner />}>
      <Profile userPromise={userPromise} />
    </Suspense>
  );
}

// Client Component
'use client';
export function Profile({ userPromise }) {
  const user = use(userPromise);
  return <p>{user.name}</p>;
}

use() vs useEffect untuk Data

Pengambilan data dengan useEffect mengharuskan Anda mengelola status pemuatan dan kesalahan secara manual. use() bersama Suspense menghilangkan kode pendukung tersebut — isi komponen cukup membaca data seolah-olah data itu sinkron.

use() untuk Context

use() juga dapat membaca nilai konteks, sama seperti useContext. Perbedaannya, use() dapat dipanggil secara kondisional (di dalam if atau perulangan), sedangkan useContext harus mengikuti Rules of Hooks.
import { use } from 'react';
import { ThemeContext } from './ThemeContext';

function Button({ danger }) {
  if (danger) {
    const theme = use(ThemeContext); // conditional — allowed with use()!
    return <button style={{ color: theme.red }}>Delete</button>;
  }
  return <button>Click</button>;
}

Penanganan Kesalahan dengan ErrorBoundary

Jika Promise yang diteruskan ke use() ditolak, React akan melemparkan kesalahan. Bungkus komponen dengan ErrorBoundary untuk menangkapnya dan menampilkan tampilan cadangan.
<ErrorBoundary fallback={<Error />}>
  <Suspense fallback={<Loading />}>
    <Profile userPromise={fetchUser(id)} />
  </Suspense>
</ErrorBoundary>

use() Hanya di Komponen Klien

use() dengan Promise dapat digunakan di Komponen Klien. Di Komponen Server, gunakan async/await secara langsung — Anda tidak perlu menggunakan use() dengan Promise di server.

Menyimpan Promise dalam Cache

Jika komponen melakukan render ulang, komponen tersebut harus menerima referensi Promise yang sama agar tidak mengambil ulang data. Buat Promise di luar komponen atau di lokasi yang stabil (server, cache, atau state), lalu teruskan sebagai props.

Streaming dengan use()

Menggabungkan use() dengan SSR streaming memungkinkan React mengalirkan HTML halaman, menampilkan tampilan cadangan Suspense, lalu mengalirkan konten yang telah selesai saat Promise terpenuhi — semuanya dalam satu koneksi HTTP.

React.cache() untuk Deduplicasi

Di server, React.cache() (atau unstable_cache milik Next.js) melakukan deduplikasi terhadap beberapa pemanggilan fungsi asinkron yang sama dalam satu proses render, sehingga database hanya diakses sekali meskipun beberapa komponen menggunakan promise yang sama.

Cek Singkat

Apa yang dilakukan Client Component ketika use(promise) dipanggil sementara promise masih menunggu penyelesaian?

Ringkasan

use(promise) membaca data asinkron secara sinkron saat render dan menangguhkan render jika masih menunggu penyelesaian. use(context) dapat digunakan secara kondisional, berbeda dengan useContext. Selalu padukan dengan Suspense untuk status pemuatan dan ErrorBoundary untuk error.

Selanjutnya

Pelajaran berikutnya: **Aksi React & useActionState** — Anda akan mendefinisikan aksi server dan klien serta menangani pengiriman formulir dengan status menunggu.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Hook use() untuk Sumber Daya Asinkron” gratis?

Ya — teks lengkap “Hook use() untuk Sumber Daya 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 “Hook use() untuk Sumber Daya Asinkron”?

Baca promise dan context saat render dengan hook use() di React 19. 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 use() untuk Sumber Daya 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

  1. Penjelasan React Server Components
  2. Hook use() untuk Sumber Daya Asinkron
  3. React Actions & useActionState
  4. useOptimistic untuk Umpan Balik Seketika
← Kembali ke React Academy