0Pricing
React Academy · Pelajaran

Mutasi dan Pembaruan Optimistis dengan SWR

Gunakan mutate() dan useSWRMutation untuk operasi penulisan dengan UI optimistis dan pengembalian otomatis.

Mutasi dan Pembaruan Optimistis dengan SWR adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

mutate: Memvalidasi Ulang Berdasarkan Kunci

Fungsi mutate global dari swr memungkinkan Anda memicu validasi ulang untuk kunci tembolok apa pun dari mana saja dalam aplikasi Anda: mutate('/api/user') menyebabkan semua kait useSWR('/api/user') mengambil ulang data.

Impor fungsi ini dengan: import { mutate } from 'swr'. Ini berguna untuk membatalkan validitas data setelah tindakan server di luar komponen yang memiliki akses langsung ke mutate terikat.

mutate dengan Data: Pembaruan Tembolok Tanpa Pengambilan Ulang

Teruskan data sebagai argumen kedua ke mutate: mutate('/api/user', updatedUser) segera menetapkan tembolok ke updatedUser tanpa membuat permintaan jaringan. Ini terkadang disebut mutasi lokal.

Tambahkan { revalidate: false } sebagai argumen ketiga untuk mencegah SWR mengambil ulang setelah pembaruan optimistis.

useSWRMutation: Untuk Pemicu Eksplisit

useSWRMutation dirancang untuk mutasi yang diprakarsai pengguna (pengiriman formulir, klik tombol), bukan pengambilan otomatis. Kait ini tidak berjalan saat pemasangan; kait ini hanya berjalan ketika Anda memanggil trigger().

Impor dari swr/mutation: const { trigger, isMutating, data, error } = useSWRMutation('/api/post', sendRequest).

Tanda Tangan Pengambil Data useSWRMutation

Pengambil data untuk useSWRMutation menerima (key, { arg }), dengan arg sebagai nilai yang diteruskan ke trigger(). Contoh: async (url, { arg: newPost }) => fetch(url, { method: 'POST', body: JSON.stringify(newPost) }).

Panggil trigger({ title: 'New Post', content: '...' }) untuk menjalankan mutasi dengan data postingan sebagai argumen.

Status isMutating

isMutating dari useSWRMutation bernilai true selama permintaan mutasi sedang diproses. Gunakan ini untuk menonaktifkan tombol pengiriman dan menampilkan indikator pemuatan selama permintaan berlangsung, sehingga mencegah pengiriman ganda.

Ini menggantikan variabel status isSubmitting manual yang harus Anda kelola dengan useState.

Penjelasan Pembaruan Optimistis

Pembaruan optimistis langsung menerapkan hasil yang diharapkan ke antarmuka sebelum server mengonfirmasi perubahan. Jika server berhasil, tidak ada tindakan lain yang diperlukan. Jika gagal, pembaruan dikembalikan ke status sebelumnya.

Pola ini membuat antarmuka terasa seketika: tombol suka tampak langsung diklik tanpa menunggu respons POST.

Pembaruan Optimistis dengan SWR

Gunakan mutate(key, newData, { optimisticData: optimisticValue, rollbackOnError: true }). SWR langsung menetapkan cache ke optimisticValue, mengirim permintaan validasi ulang, dan mengembalikannya ke nilai sebelumnya jika permintaan menimbulkan galat.

Opsi rollbackOnError: true sangat penting untuk memastikan kebenaran: tanpanya, mutasi yang gagal akan meninggalkan data optimistis yang kedaluwarsa di cache.

Pengembalian Otomatis Saat Terjadi Galat

Saat rollbackOnError: true ditetapkan dan mutasi ditolak, SWR otomatis memulihkan cache ke cuplikan yang diambil sebelum pembaruan optimistis. Anda tidak perlu menulis kode pengembalian secara manual.

Selain itu, tetapkan populateCache: false jika isi respons mutasi tidak sesuai dengan bentuk data useSWR, agar respons tidak memperbarui cache secara keliru.

mutate Terikat vs mutate Global

useSWR mengembalikan mutate terikat: const { data, mutate } = useSWR('/api/user', fetcher). mutate terikat ini otomatis menargetkan kunci '/api/user'; Anda tidak perlu memberikan kunci tersebut lagi.

Gunakan mutate terikat di dalam komponen yang memiliki tampilan data. Gunakan mutate global dari swr jika Anda perlu membatalkan validasi suatu kunci dari komponen atau fungsi utilitas yang tidak berkaitan.

Perbandingan dengan Mutasi React Query

useMutation milik React Query memiliki pola trigger/isMutating yang serupa. Perbedaan utamanya: callback onSuccess milik React Query bersama queryClient.invalidateQueries merupakan pola idiomatis untuk membatalkan validasi cache. SWR menggunakan fungsi mutate secara langsung untuk memperbarui cache.

Keduanya mendukung pembaruan optimistis dan pengembalian, tetapi bentuk API-nya berbeda. Tim yang mahir menggunakan salah satunya dapat mempelajari yang lain dengan cepat.

Strategi Cache Setelah Mutasi

Setelah mutasi berhasil, Anda memiliki tiga pilihan: mengambil ulang data dengan memanggil mutate(key), memperbarui cache menggunakan isi respons (jika API mengembalikan sumber daya yang telah diperbarui), atau menggabungkan keduanya melalui pembaruan optimistis dan validasi ulang.

Untuk mutasi daftar (menambahkan item), perbarui cache secara manual untuk menambahkan item baru, lalu lakukan validasi ulang guna mengonfirmasi status server. Cara ini menghindari pengambilan ulang seluruh daftar sekaligus menjaga konsistensi data.

Pengembalian Pembaruan Optimistis

Opsi apa yang harus Anda tetapkan di mutate milik SWR agar pembaruan optimistis dikembalikan secara otomatis saat terjadi galat?

Ringkasan Pelajaran

mutate(key) global memicu validasi ulang; mutate(key, data) memperbarui cache tanpa mengambil ulang data. useSWRMutation menangani mutasi eksplisit yang dipicu pengguna dengan trigger(), status isMutating, dan dukungan extraArg. Pembaruan optimistis dengan optimisticData dan rollbackOnError: true membuat antarmuka terasa seketika, dengan pemulihan otomatis dari galat.

mutate terikat dari useSWR menargetkan kuncinya sendiri; mutate global dari swr dapat digunakan di mana saja.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mutasi dan Pembaruan Optimistis dengan SWR” gratis?

Ya — teks lengkap “Mutasi dan Pembaruan Optimistis dengan SWR” 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 “Mutasi dan Pembaruan Optimistis dengan SWR”?

Gunakan mutate() dan useSWRMutation untuk operasi penulisan dengan UI optimistis dan pengembalian otomatis. 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 3 dari 4.

Berapa lama pelajaran “Mutasi dan Pembaruan Optimistis dengan SWR” 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