restate / v1.0.0

Veelgestelde vragen

Antwoorden op de meest gestelde vragen over renderen, opslaan, scopes en fouten in restate.

BasisHeb ik een Provider nodig?

Nee. Een store is een waarde op moduleniveau; elk component dat hem importeert kan hem gebruiken. Gebruik useRestateScope als state bij een componentinstantie moet horen.

BasisWaarom rendert mijn component bij elke wijziging?

Een hook-aanroep zonder selector abonneert op de hele waarde. Geef een selector door die alleen teruggeeft wat het component toont.

BasisMijn selector geeft een object terug en rendert elke keer.

Een nieuw object is volgens Object.is nooit gelijk aan het vorige. Geef shallow mee als tweede argument of selecteer velden apart.

BasisEen object veranderde, maar er werd niets bijgewerkt.

set kreeg hetzelfde object, dus restate zag geen verandering. Geef vanuit set een nieuw object of nieuwe array terug.

OpslaanWaar wacht ik op opgeslagen data?

Eén keer, in het client-toegangspunt: voer await restateManager.ready uit voordat je de app rendert. Daarna lezen componenten opgeslagen waarden direct. Stores in een useRestateScope wachten op hun eigen scope.manager.ready.

OpslaanWanneer wordt data naar opslag geschreven?

Alleen als je save() aanroept of, met autoSave aan, na wijzigingen. Bewerken verandert het geheugen; status().dirty vertelt je dat er niet-opgeslagen wijzigingen zijn.

OpslaanautoSave of save()?

Gebruik autoSave voor instellingen en concepten die altijd bewaard moeten worden. Gebruik save() als de gebruiker beslist, zoals met een knop Opslaan of het versturen van een formulier. Je kunt save() ook aanroepen als autoSave aan staat, bijvoorbeeld bij pagehide.

OpslaanOpslaan mislukt in een privévenster of tijdens SSR.

Als opslag niet beschikbaar is, blijft de store in het geheugen werken, is status().available false en wordt save() geweigerd met STORAGE_UNAVAILABLE. Het opstarten lukt toch.

FoutenrestateManager.ready werd geweigerd. Wat nu?

Het wordt geweigerd met BULK_OPERATION_FAILED als een record niet kon worden gelezen, gemigreerd of gevalideerd. error.failures noemt elke store en zijn fout. Herstel of wis het record, roep initialize() van die store aan en vraag ready opnieuw op.

FoutenIk zie QUEUE_FULL of STORAGE_TIMEOUT.

De opslag is trager dan het werk dat je in de wachtrij zet. Vermijd save() in een strakke lus — een wachtende save neemt al de nieuwste waarde — of gebruik autoSave met een wachttijd. Stel zo nodig maxPendingOperations en operationTimeoutMs bij.

FoutenEen laat verzoek schrijft na de unmount naar een store.

set() en reset() op een vernietigde store worden genegeerd, net als een React-state-update na unmount. Abonneren gooit STORE_DESTROYED en opslagcommando's worden geweigerd.

ScopesMijn scoped store negeert nieuwe props.

De factory draait één keer, net als een initializer van useState. Render het component met een key per document, zodat elk nieuw document een nieuwe scope krijgt.

ScopesHoe voorkom ik hydration-mismatches?

Geef op de server en de client dezelfde serverdata door als props, en maak de store daaruit in useRestateScope. De beginwaarde wordt de server-snapshot.

ScopesWaarom zit mijn scoped store niet in restateManager.ready?

Opgeslagen stores in een scope beginnen met laden nadat het eigenaarscomponent op de client is gecommit. Wacht op scope.manager.ready binnen een laadgrens in dat component.

OpslaanMMKV_UNAVAILABLE in React Native.

Installeer react-native-mmkv en de native afhankelijkheden, en bouw de app opnieuw. Gebruik in Expo een development build. Stores in het geheugen werken zonder MMKV.

Documentatie doorzoeken

Zoek in titels, beschrijvingen en de tekst van alle gidsen.