restate / v1.0.0

Vanlige spørsmål

Svar på de vanligste spørsmålene om rendering, lagring, scopes og feil i restate.

GrunnleggendeTrenger jeg en Provider?

Nei. En store er en verdi på modulnivå; enhver komponent som importerer den, kan bruke den. Bruk useRestateScope når state skal høre til en komponentinstans.

GrunnleggendeHvorfor renderes komponenten min ved hver endring?

Å kalle hooken uten selector abonnerer på hele verdien. Send en selector som bare returnerer det komponenten viser.

GrunnleggendeMin selector returnerer et objekt og renderes hver gang.

Et nytt objekt er aldri likt det forrige etter Object.is. Send shallow som andre argument, eller velg feltene hver for seg.

GrunnleggendeEt objekt ble endret, men ingenting ble oppdatert.

set fikk det samme objektet, så restate så ingen endring. Returner et nytt objekt eller en ny array fra set.

LagringHvor venter jeg på lagrede data?

Én gang, i klientens inngangspunkt: kjør await restateManager.ready før du renderer appen. Derfra leser komponentene lagrede verdier direkte. Stores i en useRestateScope venter på sin egen scope.manager.ready.

LagringNår skrives data til lagringen?

Bare når du kaller save(), eller etter endringer når autoSave er slått på. Redigering endrer minnet; status().dirty forteller at det finnes ulagrede endringer.

LagringautoSave eller save()?

Bruk autoSave for innstillinger og utkast som alltid skal lagres. Bruk save() når brukeren bestemmer, som med en Lagre-knapp eller en innsending av skjema. Du kan kalle save() også når autoSave er på, for eksempel ved pagehide.

LagringLagring mislykkes i et privat vindu eller under SSR.

Når lagring ikke er tilgjengelig, fortsetter storen i minnet, status().available er false, og save() avvises med STORAGE_UNAVAILABLE. Oppstarten lykkes likevel.

FeilrestateManager.ready ble avvist. Hva nå?

Den avvises med BULK_OPERATION_FAILED når en post ikke kunne leses, migreres eller valideres. error.failures lister opp hver store og feilen dens. Rett eller tøm posten, kall initialize() for den storen, og les ready igjen.

FeilJeg ser QUEUE_FULL eller STORAGE_TIMEOUT.

Lagringen er tregere enn arbeidet du legger i kø. Unngå å kalle save() i en tett løkke — en ventende lagring tar allerede den nyeste verdien — eller bruk autoSave med en ventetid. Juster maxPendingOperations og operationTimeoutMs ved behov.

FeilEn sen forespørsel skriver til en store etter unmount.

set() og reset() på en ødelagt store ignoreres, akkurat som en React-state-oppdatering etter unmount. Abonnement kaster STORE_DESTROYED, og lagringskommandoer avvises.

ScopesStoren min med scope ignorerer nye props.

Factoryen kjører én gang, som en initialiserer til useState. Render komponenten med en key per dokument, så hvert nytt dokument får et nytt scope.

ScopesHvordan unngår jeg avvik ved hydrering?

Send de samme serverdataene som props på serveren og klienten, og opprett storen fra dem i useRestateScope. Startverdien blir serverens øyeblikksbilde.

ScopesHvorfor er ikke storen min med scope i restateManager.ready?

Lagrede stores i et scope begynner å laste inn etter at komponenten som eier dem, er committet på klienten. Vent på scope.manager.ready innenfor en lastegrense i den komponenten.

LagringMMKV_UNAVAILABLE i React Native.

Installer react-native-mmkv og native-avhengighetene, og bygg deretter appen på nytt. Bruk en development build i Expo. Stores i minnet fungerer uten MMKV.

Søk i dokumentasjonen

Søk i titler, beskrivelser og tekst i alle guider.