0Pricing
React Academy · Pelajaran

useOptimistic untuk Umpan Balik Seketika

Tampilkan pembaruan UI optimistis saat mutasi server sedang berlangsung dengan useOptimistic.

useOptimistic untuk Umpan Balik Seketika adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 4 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 useOptimistic milik React 19 untuk menampilkan perubahan UI optimistis secara instan saat mutasi server berlangsung, dengan pengembalian otomatis jika terjadi kegagalan.

Apa Itu UI Optimistis?

UI optimistis berarti menganggap mutasi server akan berhasil lalu segera memperbarui UI tanpa menunggu respons server. Jika gagal, Anda mengembalikan state ke keadaan sebelumnya.

Dasar-Dasar useOptimistic

useOptimistic menerima state aktual dan fungsi pembaru. Hook ini mengembalikan state optimistis serta fungsi untuk menerapkan pembaruan optimistis.
'use client';
import { useOptimistic } from 'react';

const [optimisticLikes, addOptimisticLike] = useOptimistic(
  likes,                      // actual state from server
  (state, newLike) => [...state, newLike] // how to apply optimistic update
);

Contoh Tombol Like

Saat pengguna mengeklik Like, segera tampilkan like baru di UI melalui addOptimisticLike, lalu kirim permintaan aktual. Jika permintaan gagal, state optimistis otomatis dikembalikan ke state aktual.
async function handleLike() {
  addOptimisticLike({ id: Date.now(), user: currentUser });
  await likePost(postId); // server action
}

Tempat State Optimistis Disimpan

optimisticLikes menampilkan nilai optimistis selama transisi berlangsung. Setelah server merespons dan state aktual `likes` diperbarui (melalui validasi ulang), useOptimistic otomatis menyelaraskannya kembali dengan state aktual.

Indikator Menunggu pada Item Optimistis

Tandai item optimistis secara visual (misalnya dengan sedikit meredupkannya) agar pengguna mengetahui bahwa item tersebut masih menunggu. Anda dapat menambahkan tanda `pending: true` dalam pembaruan optimistis lalu mengatur gayanya sesuai kebutuhan.
const [optimisticMessages, addOptimistic] = useOptimistic(
  messages,
  (state, msg) => [...state, { ...msg, pending: true }]
);

// Render
{optimisticMessages.map(m => (
  <div key={m.id} style={{ opacity: m.pending ? 0.6 : 1 }}>{m.text}</div>
))}

Menggunakan useOptimistic di Dalam Transisi

useOptimistic hanya berfungsi di dalam React Transition (startTransition atau useTransition). Saat menggunakan Server Actions dengan React 19, hal ini ditangani secara otomatis.
'use client';
import { startTransition } from 'react';

const handleSubmit = (data) => {
  startTransition(async () => {
    addOptimistic(data);
    await serverAction(data);
  });
};

Contoh Pengiriman Pesan Obrolan

Tampilkan pesan yang baru dikirim secara langsung di daftar obrolan saat server menyimpannya. Pesan segera muncul dengan status 'Mengirim...', lalu berubah menjadi 'Terkirim' ketika server mengonfirmasi.

Perilaku Pengembalian Saat Error

Jika server action gagal (melempar atau menolak), useOptimistic otomatis membuang nilai optimistis dan mengembalikannya ke state aktual terakhir. Anda tidak perlu menerapkan pengembalian secara manual.

useOptimistic vs Pembaruan Optimistis Manual

Sebelum useOptimistic, Anda mengelola dua variabel state (aktual + optimistis) dan melakukan pengembalian secara manual dalam blok catch. useOptimistic menyatukan semuanya menjadi satu hook dengan pengembalian otomatis.

Cek Singkat

Apa yang terjadi pada state optimistis jika server action yang memicunya gagal?

Ringkasan

useOptimistic(actualState, updater) mengembalikan [optimisticState, addOptimistic]. Panggil addOptimistic sebelum server action untuk mendapatkan umpan balik instan. React otomatis mengembalikan state jika action gagal. Hook ini bekerja di dalam React Transitions.

Kursus Selesai

Selamat! Anda telah menyelesaikan **Komponen Server & Fitur React 19**. Kini Anda memahami RSC, hook use(), Actions, useActionState, dan useOptimistic untuk pengembangan React modern.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “useOptimistic untuk Umpan Balik Seketika” gratis?

Ya — teks lengkap “useOptimistic untuk Umpan Balik Seketika” 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 “useOptimistic untuk Umpan Balik Seketika”?

Tampilkan pembaruan UI optimistis saat mutasi server sedang berlangsung dengan useOptimistic. 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 4 dari 4.

Berapa lama pelajaran “useOptimistic untuk Umpan Balik Seketika” 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