0Pricing
React Academy · Pelajaran

Mempertahankan Status dengan Middleware Persist

Sinkronkan status Zustand ke localStorage atau sessionStorage menggunakan middleware persist.

Mempertahankan Status dengan Middleware Persist 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.

Selamat Datang

Dalam pelajaran ini, Anda akan menggunakan perantara persist milik Zustand untuk menyinkronkan status penyimpanan ke localStorage secara otomatis agar status tersebut tetap ada setelah halaman dimuat ulang.

Mengapa Menyimpan Status?

Tanpa penyimpanan permanen, seluruh status penyimpanan akan diatur ulang ketika pengguna memuat ulang halaman. Menyimpan item keranjang, preferensi pengguna, atau status antarmuka (panel yang terbuka) ke localStorage memberi pengguna pengalaman yang lancar di berbagai sesi.

Perantara persist

Bungkus pemanggilan create() Anda dengan persist(). Berikan kunci penyimpanan yang unik. Zustand akan otomatis membaca dari localStorage saat dipasang dan menulis setiap kali status berubah.
import { create } from 'zustand';
import { persist } from 'zustand/middleware';

const useCartStore = create(
  persist(
    (set) => ({
      items: [],
      addItem: (item) => set(s => ({ items: [...s.items, item] })),
    }),
    { name: 'cart-storage' } // localStorage key
  )
);

Penyimpanan Sebagian dengan partialize

Gunakan `partialize` untuk menyimpan hanya bagian tertentu dari penyimpanan. Dengan begitu, data sementara (seperti penanda pemuatan) tidak disertakan dalam localStorage.
persist(
  (set) => ({ user: null, token: null, loading: false, fetch: () => {} }),
  {
    name: 'auth-storage',
    partialize: (state) => ({ user: state.user, token: state.token }),
    // loading and fetch are NOT persisted
  }
)

Menggunakan sessionStorage

Untuk menyimpan data hanya selama sesi peramban (dihapus saat tab ditutup), teruskan `createJSONStorage(() => sessionStorage)` sebagai opsi penyimpanan.
import { createJSONStorage } from 'zustand/middleware';

persist(storeCreator, {
  name: 'session-data',
  storage: createJSONStorage(() => sessionStorage),
})

Pemberian Versi dan Migrasi

Ketika struktur penyimpanan berubah (kolom baru atau kunci yang diganti nama), tetapkan nomor `version` dan sediakan fungsi `migrate` untuk meningkatkan data lama yang tersimpan.
persist(storeCreator, {
  name: 'my-store',
  version: 2,
  migrate: (persistedState, version) => {
    if (version === 1) {
      return { ...persistedState, newField: 'default' };
    }
    return persistedState;
  },
})

Hidrasi dan SSR

Di server (Next.js), localStorage tidak tersedia. Perantara persist milik Zustand menangani hal ini dengan baik — perantara tersebut melewati hidrasi di server dan memulihkan status di klien setelah pemasangan.

Panggilan Balik onRehydrateStorage

Gunakan `onRehydrateStorage` untuk menjalankan kode ketika penyimpanan dipulihkan dari penyimpanan. Ini berguna untuk memicu panggilan API setelah token dipulihkan.
persist(storeCreator, {
  name: 'auth',
  onRehydrateStorage: () => (state) => {
    if (state?.token) state.fetchUser();
  },
})

Menghapus Status Tersimpan

Panggil `useMyStore.persist.clearStorage()` untuk menghapus data yang tersimpan dari localStorage — berguna untuk alur keluar.
const handleLogout = () => {
  useAuthStore.persist.clearStorage();
  useAuthStore.setState({ user: null, token: null });
};

Batas Ukuran Penyimpanan

localStorage memiliki batas 5–10 MB untuk setiap asal. Hindari menyimpan kumpulan data besar (misalnya katalog produk lengkap). Simpan hanya pengenal atau objek konfigurasi kecil.

Pemeriksaan Singkat

Opsi apa dalam perantara persist yang memungkinkan Anda mengecualikan kolom status tertentu agar tidak disimpan ke localStorage?

Ringkasan

Bungkus penyimpanan Zustand Anda dengan persist() dan berikan kunci nama. Gunakan partialize untuk menyimpan hanya bagian yang relevan. Berikan versi dan lakukan migrasi ketika struktur penyimpanan berubah. Gunakan clearStorage() saat keluar.

Berikutnya

Pelajaran berikutnya: **DevTools Zustand & Pengujian Penyimpanan** — Anda akan menghubungkan ke Redux DevTools dan menulis pengujian unit untuk tindakan Zustand.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mempertahankan Status dengan Middleware Persist” gratis?

Ya — teks lengkap “Mempertahankan Status dengan Middleware Persist” 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 “Mempertahankan Status dengan Middleware Persist”?

Sinkronkan status Zustand ke localStorage atau sessionStorage menggunakan middleware persist. 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 “Mempertahankan Status dengan Middleware Persist” 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. Membuat Store Zustand Pertama Anda
  2. Pemilih & Pencegahan Render Ulang yang Tidak Perlu
  3. Mempertahankan Status dengan Middleware Persist
  4. DevTools Zustand & Pengujian Store
← Kembali ke React Academy