restate / v1.0.0
Pertanyaan umum
Jawaban untuk pertanyaan paling umum tentang render, penyimpanan, scope, dan kesalahan di restate.
Tidak ada pertanyaan yang cocok
Coba kata lain atau tampilkan semua pertanyaan.
DasarApakah saya perlu Provider?
Tidak. Store adalah nilai tingkat modul; komponen mana pun yang mengimpornya dapat memakainya. Gunakan useRestateScope saat state harus dimiliki satu instans komponen.
DasarMengapa komponen saya dirender pada setiap perubahan?
Memanggil hook tanpa selector berlangganan pada seluruh nilai. Berikan selector yang hanya mengembalikan apa yang ditampilkan komponen.
DasarFungsi selector saya mengembalikan objek dan dirender setiap kali.
Objek baru tidak pernah sama dengan yang sebelumnya menurut Object.is. Berikan shallow sebagai argumen kedua atau pilih field secara terpisah.
DasarObjeknya berubah, tetapi tidak ada yang diperbarui.
set menerima objek yang sama, jadi restate tidak melihat perubahan. Kembalikan objek atau array baru dari set.
PenyimpananDi mana saya menunggu data tersimpan?
Sekali, di titik masuk klien: jalankan await restateManager.ready sebelum merender aplikasi. Setelah itu komponen membaca nilai tersimpan secara langsung. Store di useRestateScope menunggu scope.manager.ready miliknya.
PenyimpananKapan data ditulis ke penyimpanan?
Hanya saat Anda memanggil save() atau, jika autoSave aktif, setelah perubahan. Mengedit mengubah memori; status().dirty memberi tahu ada perubahan yang belum tersimpan.
PenyimpananautoSave atau save()?
Gunakan autoSave untuk pengaturan dan draf yang harus selalu tersimpan. Gunakan save() saat pengguna yang memutuskan, misalnya dengan tombol Simpan atau pengiriman formulir. Anda tetap bisa memanggil save() saat autoSave aktif, misalnya pada pagehide.
KesalahanrestateManager.ready ditolak. Lalu bagaimana?
Ia ditolak dengan BULK_OPERATION_FAILED saat sebuah catatan tidak dapat dibaca, dimigrasi, atau divalidasi. error.failures mencantumkan setiap store dan kesalahannya. Perbaiki atau bersihkan catatannya, panggil initialize() pada store itu, dan akses ready lagi.
KesalahanSaya melihat QUEUE_FULL atau STORAGE_TIMEOUT.
Penyimpanan lebih lambat daripada pekerjaan yang Anda antrekan. Hindari memanggil save() dalam loop rapat — penyimpanan tertunda sudah mengambil nilai terbaru — atau gunakan autoSave dengan penundaan. Sesuaikan maxPendingOperations dan operationTimeoutMs bila perlu.
KesalahanPermintaan yang terlambat setelah unmount menulis ke store.
set() dan reset() pada store yang sudah dihancurkan diabaikan, seperti pembaruan state React setelah unmount. Berlangganan melempar STORE_DESTROYED, dan perintah penyimpanan ditolak.
ScopeStore dalam scope saya mengabaikan props baru.
Factory berjalan sekali, seperti inisialisasi useState. Render komponen dengan key per dokumen agar setiap dokumen baru mendapat scope baru.
ScopeBagaimana menghindari ketidakcocokan hidrasi?
Berikan data server yang sama sebagai props di server dan klien, lalu buat store darinya di useRestateScope. Nilai awal menjadi snapshot server.
ScopeMengapa store dalam scope saya tidak ada di restateManager.ready?
Store tersimpan dalam scope mulai memuat saat komponen pemiliknya di-commit di klien. Tunggu scope.manager.ready di dalam batas pemuatan pada komponen itu.
PenyimpananMMKV_UNAVAILABLE di React Native.
Instal react-native-mmkv beserta dependensi native-nya, lalu build ulang aplikasi. Di Expo, gunakan development build. Store di memori bekerja tanpa MMKV.