restate / v1.0.0

Vanliga frågor

Svar på de vanligaste frågorna om rendering, sparande, scopes och fel i restate.

GrunderBehöver jag en Provider?

Nej. En store är ett värde på modulnivå; vilken komponent som helst som importerar den kan använda den. Använd useRestateScope när state ska tillhöra en komponentinstans.

GrunderVarför renderas min komponent vid varje ändring?

Att anropa hooken utan selector prenumererar på hela värdet. Skicka en selector som bara returnerar det komponenten visar.

GrunderMin selector returnerar ett objekt och renderas varje gång.

Ett nytt objekt är aldrig lika med det föregående enligt Object.is. Skicka shallow som andra argument eller välj fälten separat.

GrunderEtt objekt ändrades, men ingenting uppdaterades.

set fick samma objekt, så restate såg ingen förändring. Returnera ett nytt objekt eller en ny array från set.

SparandeVar väntar jag på sparad data?

En gång, i klientens startpunkt: kör await restateManager.ready innan du renderar appen. Därefter läser komponenterna sparade värden direkt. Stores i en useRestateScope väntar på sin egen scope.manager.ready.

SparandeNär skrivs data till lagringen?

Bara när du anropar save() eller, med autoSave på, efter ändringar. Att redigera ändrar minnet; status().dirty talar om att det finns osparade ändringar.

SparandeautoSave eller save()?

Använd autoSave för inställningar och utkast som alltid ska sparas. Använd save() när användaren bestämmer, som med en Spara-knapp eller ett formulär som skickas. Du kan anropa save() även med autoSave på, till exempel vid pagehide.

SparandeSparandet misslyckas i ett privat fönster eller under SSR.

När lagring inte är tillgänglig fortsätter storen att fungera i minnet, status().available är false och save() avvisas med STORAGE_UNAVAILABLE. Starten lyckas ändå.

FelrestateManager.ready avvisades. Vad nu?

Den avvisas med BULK_OPERATION_FAILED när en post inte kunde läsas, migreras eller valideras. error.failures listar varje store och dess fel. Rätta eller rensa posten, anropa den storens initialize() och läs ready igen.

FelJag ser QUEUE_FULL eller STORAGE_TIMEOUT.

Lagringen är långsammare än arbetet du köar. Undvik att anropa save() i en tät loop — en väntande sparning tar redan det senaste värdet — eller använd autoSave med väntetid. Justera maxPendingOperations och operationTimeoutMs vid behov.

FelEn sen begäran skriver till en store efter unmount.

set() och reset() på en förstörd store ignoreras, som en React-state-uppdatering efter unmount. Prenumeration kastar STORE_DESTROYED och lagringskommandon avvisas.

ScopesMin scopade store ignorerar nya props.

Factoryn körs en gång, som en initialiserare till useState. Rendera komponenten med en key per dokument, så att varje nytt dokument får ett nytt scope.

ScopesHur undviker jag hydreringsavvikelser?

Skicka samma serverdata som props på servern och klienten och skapa storen från den i useRestateScope. Startvärdet blir serverns ögonblicksbild.

ScopesVarför finns inte min scopade store i restateManager.ready?

Sparade stores i ett scope börjar läsas in efter att den ägande komponenten committats på klienten. Vänta på scope.manager.ready inom en laddningsgräns i den komponenten.

SparandeMMKV_UNAVAILABLE i React Native.

Installera react-native-mmkv och dess native-beroenden och bygg sedan om appen. Använd en development build i Expo. Stores i minnet fungerar utan MMKV.

Sök i dokumentationen

Sök i rubriker, beskrivningar och text i alla guider.