0Pricing
React Academy · Pelajaran

Menyinkronkan Status dengan localStorage

Buat hook khusus useLocalStorage yang menjaga sinkronisasi dua arah antara status React dan localStorage.

Menyinkronkan Status dengan localStorage 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.

Pendekatan Naif Menjadi Tidak Sinkron

Insting awal biasanya adalah membaca localStorage di satu tempat dan menulisnya di tempat lain, tetapi keduanya dapat menjadi tidak selaras. Pembaruan status yang lupa disimpan, atau nilai tersimpan yang tidak tercermin dalam status, dapat menimbulkan galat.

Anda memerlukan satu sumber kebenaran yang menjaga status React dan penyimpanan tetap selaras.

Pengait Khusus useLocalStorage

Solusi yang rapi adalah pengait useLocalStorage yang membungkus useState dan menyimpan perubahan secara otomatis. Pengait ini mengembalikan nilai dan fungsi pengatur seperti useState.

Kode pemakai menggunakannya persis seperti status biasa, tetapi mendapatkan penyimpanan otomatis.

Fungsi Inisialisasi Tertunda

Membaca localStorage adalah pekerjaan sinkron, jadi Anda tidak boleh melakukannya pada setiap perenderan. Berikan fungsi kepada useState sebagai inisialisasi tertunda agar pembacaan hanya terjadi sekali saat komponen dipasang.

Di dalam fungsi tersebut, uraikan nilai yang tersimpan atau kembalikan nilai bawaan yang diberikan.

Pentingnya Inisialisasi Tertunda

Jika Anda menghitung status awal langsung sebagai argumen, ekspresi tersebut dijalankan pada setiap perenderan meskipun diabaikan setelah perenderan pertama. Dengan fungsi, React hanya memanggilnya sekali.

Untuk pembacaan localStorage, cara ini menghindari pekerjaan sinkron berulang pada utas utama di setiap perenderan.

Menyinkronkan melalui useEffect

Untuk menyimpan pembaruan, tambahkan useEffect yang berjalan setiap kali nilai berubah dan memanggil localStorage.setItem(key, JSON.stringify(value)).

Dengan menempatkan nilai tersebut dalam larik dependensi, setiap perubahan status akan otomatis ditulis ke penyimpanan.

Pembaruan dengan Fungsi Menghindari Nilai Lama yang Tertangkap

Saat menetapkan nilai berdasarkan nilai sebelumnya, gunakan bentuk fungsional setValue(prev => prev + 1). Cara ini menghindari penggunaan nilai lama yang tertangkap dan kemudian ditulis.

Hal ini sangat penting di dalam penangan peristiwa dan efek yang mungkin menangkap cuplikan data yang sudah tidak berlaku.

Menangani Nilai Tersimpan yang Kosong

getItem mengembalikan null ketika kunci tidak ada. Fungsi inisialisasi Anda harus mendeteksi keadaan ini dan menggunakan nilai bawaan, bukan mencoba mengurai nilai null.

Pemeriksaan seperti stored != null ? JSON.parse(stored) : defaultValue menangani kunjungan pertama dengan baik.

Generik TypeScript

Dalam TypeScript, Anda membuat pengait generik: function useLocalStorage<T>(key: string, initial: T). Cara ini mempertahankan tipe nilai sehingga kode pemakai mendapatkan keamanan tipe sepenuhnya.

Tupel yang dikembalikan bertipe [T, Dispatch<SetStateAction<T>>], sama seperti useState.

Membuat Versi Data Tersimpan

Seiring waktu, struktur data Anda berubah dan nilai lama yang tersimpan dapat merusak kode baru. Simpan kunci versi bersama data agar Anda dapat mendeteksi format yang sudah usang.

Contohnya, simpan { version: 2, data } lalu bandingkan versinya saat membaca.

Menghapus Data saat Versi Tidak Cocok

Jika versi yang tersimpan tidak cocok dengan versi saat ini, buang atau migrasikan nilai lama, bukan mempercayainya begitu saja. Strategi paling sederhana adalah menghapus entri usang dan kembali ke nilai bawaan.

Ini mencegah kerusakan yang disebabkan oleh data yang ditulis oleh rilis aplikasi yang lebih lama.

Merangkai Pengait

useLocalStorage lengkap menggabungkan fungsi inisialisasi tertunda yang membaca dan mengurai data dengan aman, fungsi pengatur yang mendukung pembaruan berbasis fungsi, serta useEffect yang menulis langsung ke penyimpanan dengan penomoran versi.

Hasilnya adalah pengganti siap pakai untuk useState yang tetap bertahan setelah pemuatan ulang.

Uji Cepat

Uji pemahaman Anda tentang inisialisasi status.

Ringkasan

Anda telah mempelajari cara membuat pengait useLocalStorage dengan fungsi inisialisasi tertunda, menyimpan perubahan melalui useEffect, menggunakan pembaruan berbasis fungsi untuk menghindari nilai lama yang tertangkap, dan menangani nilai kosong.

Anda juga telah mempelajari generik TypeScript dan penomoran versi untuk menghapus data usang dengan aman.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menyinkronkan Status dengan localStorage” gratis?

Ya — teks lengkap “Menyinkronkan Status dengan localStorage” 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 “Menyinkronkan Status dengan localStorage”?

Buat hook khusus useLocalStorage yang menjaga sinkronisasi dua arah antara status React dan localStorage. 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 “Menyinkronkan Status dengan localStorage” 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. Membaca dan Menulis localStorage di React
  2. Menyinkronkan Status dengan localStorage
  3. Menangani Peristiwa Penyimpanan Antar-Tab
  4. sessionStorage, IndexedDB, dan Memilih API yang Tepat
← Kembali ke React Academy