restate / v1.0.0

Ofte stillede spørgsmål

Svar på de mest stillede spørgsmål om rendering, gem, scopes og fejl i restate.

GrundlæggendeHar jeg brug for en Provider?

Nej. En store er en værdi på modulniveau; enhver komponent, der importerer den, kan bruge den. Brug useRestateScope, når state skal høre til en komponentinstans.

GrundlæggendeHvorfor renderes min komponent ved hver ændring?

At kalde hooken uden selector abonnerer på hele værdien. Giv en selector, der kun returnerer det, komponenten viser.

GrundlæggendeMin selector returnerer et objekt og renderes hver gang.

Et nyt objekt er aldrig lig med det forrige ifølge Object.is. Giv shallow som andet argument, eller vælg felterne hver for sig.

GrundlæggendeEt objekt blev ændret, men intet blev opdateret.

set fik det samme objekt, så restate så ingen ændring. Returnér et nyt objekt eller array fra set.

GemHvor venter jeg på gemte data?

Én gang, i klientens indgangspunkt: kør await restateManager.ready, før du renderer appen. Derefter læser komponenterne gemte værdier direkte. Stores i en useRestateScope venter på deres egen scope.manager.ready.

GemHvornår skrives data til lageret?

Kun når du kalder save(), eller, med autoSave slået til, efter ændringer. At redigere ændrer hukommelsen; status().dirty fortæller, at der er ikke-gemte ændringer.

GemautoSave eller save()?

Brug autoSave til indstillinger og kladder, der altid skal gemmes. Brug save(), når brugeren bestemmer, som med en Gem-knap eller en formularindsendelse. Du kan kalde save(), selv når autoSave er slået til, for eksempel ved pagehide.

GemGem fejler i et privat vindue eller under SSR.

Når lageret ikke er tilgængeligt, kører storen videre i hukommelsen, status().available er false, og save() afvises med STORAGE_UNAVAILABLE. Opstarten lykkes alligevel.

FejlrestateManager.ready blev afvist. Hvad nu?

Den afvises med BULK_OPERATION_FAILED, når en post ikke kunne læses, migreres eller valideres. error.failures oplister hver store og dens fejl. Ret eller ryd posten, kald den stores initialize(), og læs ready igen.

FejlJeg ser QUEUE_FULL eller STORAGE_TIMEOUT.

Lageret er langsommere end det arbejde, du sætter i kø. Undgå at kalde save() i en tæt løkke — et ventende gem tager allerede den nyeste værdi — eller brug autoSave med en ventetid. Justér maxPendingOperations og operationTimeoutMs om nødvendigt.

FejlEn sen anmodning skriver til en store efter unmount.

set() og reset() på en nedlagt store ignoreres, ligesom en React-state-opdatering efter unmount. Abonnement kaster STORE_DESTROYED, og lagerkommandoer afvises.

ScopesMin scopede store ignorerer nye props.

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

ScopesHvordan undgår jeg uoverensstemmelser ved hydrering?

Giv de samme serverdata som props på serveren og klienten, og opret storen ud fra dem i useRestateScope. Startværdien bliver serverens snapshot.

ScopesHvorfor er min scopede store ikke i restateManager.ready?

Gemte stores i et scope begynder at indlæse, efter at den ejende komponent er committet på klienten. Vent på scope.manager.ready inden for en indlæsningsgrænse i den komponent.

GemMMKV_UNAVAILABLE i React Native.

Installér react-native-mmkv og dets native-afhængigheder, og byg derefter appen igen. Brug en development build i Expo. Stores i hukommelsen virker uden MMKV.

Søg i dokumentationen

Søg i titler, beskrivelser og tekst i alle guides.