restate / v1.0.0
Časté otázky
Odpovědi na nejčastější otázky o renderování, ukládání, scope a chybách v restate.
Žádné odpovídající otázky
Zkuste jiné slovo nebo zobrazte všechny otázky.
ZákladyPotřebuji Provider?
Ne. Store je hodnota na úrovni modulu; může ho používat každá komponenta, která ho importuje. Když má stav patřit instanci komponenty, použijte useRestateScope.
ZákladyProč se moje komponenta překresluje při každé změně?
Volání hooku bez selector odebírá celou hodnotu. Předejte selector, který vrací jen to, co komponenta zobrazuje.
ZákladyMůj selector vrací objekt a překresluje se pokaždé.
Nový objekt se podle Object.is nikdy nerovná předchozímu. Předejte shallow jako druhý argument nebo vybírejte pole zvlášť.
ZákladyObjekt se změnil, ale nic se neaktualizovalo.
set dostal stejný objekt, takže restate žádnou změnu neviděl. Z set vracejte nový objekt nebo pole.
UkládáníKde čekat na uložená data?
Jednou, ve vstupním bodu klienta: před renderem aplikace spusťte await restateManager.ready. Od té chvíle komponenty čtou uložené hodnoty přímo. Story v useRestateScope čekají na svůj vlastní scope.manager.ready.
UkládáníKdy se data zapisují do úložiště?
Jen když zavoláte save(), nebo po změnách, když je zapnuté autoSave. Úprava mění paměť; status().dirty říká, že existují neuložené změny.
UkládáníautoSave, nebo save()?
autoSave používejte pro nastavení a koncepty, které se mají ukládat vždy. save() použijte, když rozhoduje uživatel, třeba tlačítkem Uložit nebo odesláním formuláře. save() můžete volat i při zapnutém autoSave, například při pagehide.
ChybyrestateManager.ready byl odmítnut. Co teď?
Odmítne se s BULK_OPERATION_FAILED, když záznam nešlo přečíst, migrovat nebo validovat. error.failures vypíše každý store a jeho chybu. Opravte nebo vymažte záznam, zavolejte initialize() daného store a znovu přistupte k ready.
ChybyVidím QUEUE_FULL nebo STORAGE_TIMEOUT.
Úložiště je pomalejší než práce, kterou řadíte do fronty. Nevolejte save() v těsné smyčce — čekající uložení už bere nejnovější hodnotu — nebo použijte autoSave s čekáním. V případě potřeby upravte maxPendingOperations a operationTimeoutMs.
ChybyOpožděný požadavek zapisuje do store po odpojení.
set() a reset() na zničeném store se ignorují, stejně jako aktualizace stavu Reactu po odpojení. Odběr vyhodí STORE_DESTROYED a příkazy úložiště se odmítnou.
ScopeMůj store ve scope ignoruje nové props.
Factory se spustí jednou, jako inicializátor useState. Renderujte komponentu s key pro každý dokument, aby každý nový dokument dostal nový scope.
ScopeJak se vyhnout nesouladu při hydrataci?
Předávejte na serveru i klientovi stejná serverová data jako props a vytvořte z nich store v useRestateScope. Výchozí hodnota se stane snímkem ze serveru.
ScopeProč můj store ve scope není v restateManager.ready?
Ukládané story ve scope začnou načítat po commitu vlastnící komponenty na klientovi. Počkejte na scope.manager.ready uvnitř hranice načítání v této komponentě.
UkládáníMMKV_UNAVAILABLE v React Native.
Nainstalujte react-native-mmkv a jeho nativní závislosti a pak aplikaci znovu sestavte. V Expo použijte development build. Story v paměti fungují bez MMKV.