Membangun Penyimpanan Khusus dengan useSyncExternalStore
Implementasikan penyimpanan eksternal ringan dari awal dan hubungkan ke React dengan useSyncExternalStore.
Membangun Penyimpanan Khusus dengan useSyncExternalStore 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.
Persyaratan Minimal Penyimpanan
Penyimpanan khusus memerlukan tiga hal: sejumlah keadaan, metode berlangganan untuk mendaftarkan pendengar, dan metode getSnapshot untuk membaca keadaan saat ini. Itulah seluruh kontrak yang diharapkan useSyncExternalStore.
Menjaga penyimpanan tetap sekecil ini membuatnya tidak bergantung pada kerangka kerja, sehingga penyimpanan yang sama dapat digunakan di dalam maupun di luar React.
Pabrik createStore
Pabrik createStore menerima nilai awal dan mengembalikan objek dengan getSnapshot, fungsi berlangganan, serta metode pembaruan. Di dalamnya, pabrik ini menyimpan keadaan saat ini dan sekumpulan fungsi panggil balik pendengar.
Pola pabrik ini memungkinkan Anda membuat beberapa penyimpanan independen menggunakan satu fungsi yang dapat digunakan kembali.
Fungsi Pembaruan Memberi Tahu Pelanggan
Ketika pembaruan mengubah keadaan, fungsi tersebut menetapkan nilai baru lalu memanggil setiap pendengar yang terdaftar. Pendengar tersebut adalah fungsi panggil balik yang diberikan React melalui fungsi berlangganan.
Memanggilnya memberi tahu React bahwa penyimpanan berubah, sehingga React membaca ulang getSnapshot dan merender ulang komponen apa pun yang membaca dari penyimpanan tersebut.
Menghubungkan ke React melalui Hook
Komponen membaca dari penyimpanan dengan memanggil useSyncExternalStore menggunakan metode berlangganan dan getSnapshot milik penyimpanan. Hook ini mengembalikan nilai saat ini dan merender ulang komponen ketika nilainya berubah.
Anda dapat membungkusnya dalam hook khusus seperti useStore agar komponen cukup memanggil satu fungsi, tanpa merangkai sendiri argumen hook setiap kali.
Berbagi Antar-Komponen tanpa Penyedia
Karena penyimpanan merupakan objek tingkat modul, komponen apa pun yang mengimpornya akan berbagi keadaan yang sama, tanpa memerlukan Penyedia Konteks. Tidak ada hierarki yang perlu dibungkus dan tidak ada penerusan properti berantai.
Inilah daya tarik utama penyimpanan eksternal: keadaan global bersama dengan model impor-dan-pakai yang sederhana, bukan hierarki Penyedia.
Beberapa Penyimpanan untuk Bagian Keadaan
Anda dapat membuat beberapa penyimpanan kecil yang masing-masing memiliki satu bagian keadaan, alih-alih satu penyimpanan monolitik. Komponen hanya berlangganan ke bagian yang diperlukan.
Hal ini menjaga tanggung jawab tetap terpisah dan membatasi perenderan ulang, karena perubahan pada satu bagian tidak pernah mengganggu komponen yang membaca bagian lain.
Zustand Menggunakannya secara Internal
Zustand, pustaka keadaan minimal yang populer, dibangun tepat berdasarkan pola ini dan menggunakan useSyncExternalStore secara internal sejak versi 4. API-nya yang kecil pada dasarnya merupakan createStore yang telah dipoles dengan lapisan pemilih.
Melihat hubungan ini menghilangkan kesan misterius dari pustaka semacam itu: semuanya adalah pembungkus tipis dan ergonomis di atas primitif yang sama, yang dapat Anda bangun sendiri.
Render Ulang Hanya pada Bagian yang Berubah
Dengan meneruskan pemilih ke getSnapshot yang hanya mengembalikan bagian status yang digunakan sebuah komponen, Anda memastikan komponen hanya dirender ulang ketika bagian tersebut berubah.
Ini memerlukan hasil pemilih yang stabil, jadi memoisasikan nilai turunan untuk menghindari loop tak terbatas akibat referensi baru, sekaligus membatasi pembaruan pada bagian yang relevan.
Label Penelusuran Kesalahan di DevTools
Untuk menelusuri kesalahan, Anda dapat memasang label pada penyimpanan dan mencatat pembaruan, atau mengintegrasikannya dengan alat pengembang peramban agar dapat melacak penyimpanan mana yang berubah dan kapan.
Bahkan catatan sederhana di konsol di dalam fungsi pembaruan, yang dikendalikan oleh penanda pengembangan, membantu Anda memahami alur status saat membangun penyimpanan.
Menguji Penyimpanan di Dalam dan di Luar React
Karena penyimpanan ini adalah JavaScript murni, Anda dapat menguji logikanya secara langsung: panggil fungsi pembaruan dan pastikan getSnapshot mengembalikan nilai baru, tanpa merender apa pun.
Anda juga dapat mengujinya di dalam React dengan merender komponen yang membaca data darinya dan memastikan perenderan ulang terjadi setelah pembaruan, sehingga penyimpanan dan integrasinya tercakup.
Pemeriksaan Cepat: Fungsi Langganan Penyimpanan Kustom
Ingat kembali kontrak metode langganan pada penyimpanan kustom.
Rangkuman: Membangun Penyimpanan Kustom
Penyimpanan kustom memerlukan status, langganan, dan getSnapshot. Pabrik createStore ditambah pembaruan yang memberi tahu pendengar menghasilkan status global bersama tanpa Penyedia, karena impor modul berbagi satu instans.
Gunakan beberapa penyimpanan bagian dan pemilih untuk membatasi perenderan ulang, dengan tetap mengingat pentingnya referensi yang stabil. Zustand v4+ dibangun persis dengan pola ini, dan penyimpanan JavaScript murni mudah diuji di dalam maupun di luar React.
Belajar React dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 88
- Pelajaran
- 324
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Membangun Penyimpanan Khusus dengan useSyncExternalStore” gratis?
Ya — teks lengkap “Membangun Penyimpanan Khusus dengan useSyncExternalStore” 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 “Membangun Penyimpanan Khusus dengan useSyncExternalStore”?
Implementasikan penyimpanan eksternal ringan dari awal dan hubungkan ke React dengan useSyncExternalStore. 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 “Membangun Penyimpanan Khusus dengan useSyncExternalStore” 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
- Masalah Langganan Penyimpanan Eksternal
- API dan Parameter useSyncExternalStore
- Berlangganan API Peramban
- Membangun Penyimpanan Khusus dengan useSyncExternalStore