restate / v1.0.0
Časté otázky
Odpovede na najčastejšie otázky o renderovaní, ukladaní, scope a chybách v restate.
Žiadne zodpovedajúce otázky
Skúste iné slovo alebo zobrazte všetky otázky.
ZákladyPotrebujem Provider?
Nie. Store je hodnota na úrovni modulu; môže ho používať každý komponent, ktorý ho importuje. Keď má stav patriť inštancii komponentu, použite useRestateScope.
ZákladyPrečo sa môj komponent prekresľuje pri každej zmene?
Volanie hooku bez selector odoberá celú hodnotu. Odovzdajte selector, ktorý vracia len to, čo komponent zobrazuje.
ZákladyMôj selector vracia objekt a prekresľuje sa zakaždým.
Nový objekt sa podľa Object.is nikdy nerovná predchádzajúcemu. Odovzdajte shallow ako druhý argument alebo vyberajte polia zvlášť.
ZákladyObjekt sa zmenil, ale nič sa neaktualizovalo.
set dostal rovnaký objekt, takže restate žiadnu zmenu nevidel. Zo set vracajte nový objekt alebo pole.
UkladanieKde čakať na uložené údaje?
Raz, vo vstupnom bode klienta: pred renderom aplikácie spustite await restateManager.ready. Odvtedy komponenty čítajú uložené hodnoty priamo. Store v useRestateScope čakajú na svoj vlastný scope.manager.ready.
UkladanieKedy sa údaje zapisujú do úložiska?
Len keď zavoláte save(), alebo po zmenách, keď je zapnuté autoSave. Úprava mení pamäť; status().dirty hovorí, že existujú neuložené zmeny.
UkladanieautoSave, alebo save()?
autoSave používajte pre nastavenia a koncepty, ktoré sa majú ukladať vždy. save() použite, keď rozhoduje používateľ, napríklad tlačidlom Uložiť alebo odoslaním formulára. save() môžete volať aj pri zapnutom autoSave, napríklad pri pagehide.
ChybyrestateManager.ready bol odmietnutý. Čo teraz?
Odmietne sa s BULK_OPERATION_FAILED, keď záznam nešlo prečítať, migrovať alebo validovať. error.failures vypíše každý store a jeho chybu. Opravte alebo vymažte záznam, zavolajte initialize() daného store a znova pristúpte k ready.
ChybyVidím QUEUE_FULL alebo STORAGE_TIMEOUT.
Úložisko je pomalšie ako práca, ktorú radíte do fronty. Nevolajte save() v tesnom cykle — čakajúce uloženie už berie najnovšiu hodnotu — alebo použite autoSave s čakaním. V prípade potreby upravte maxPendingOperations a operationTimeoutMs.
ChybyOneskorená požiadavka zapisuje do store po odpojení.
set() a reset() na zničenom store sa ignorujú, rovnako ako aktualizácia stavu Reactu po odpojení. Odber vyhodí STORE_DESTROYED a príkazy úložiska sa odmietnu.
ScopeMôj store v scope ignoruje nové props.
Factory sa spustí raz, ako inicializátor useState. Renderujte komponent s key pre každý dokument, aby každý nový dokument dostal nový scope.
ScopeAko sa vyhnúť nesúladu pri hydratácii?
Odovzdávajte na serveri aj klientovi rovnaké serverové údaje ako props a vytvorte z nich store v useRestateScope. Predvolená hodnota sa stane snímkou zo servera.
ScopePrečo môj store v scope nie je v restateManager.ready?
Ukladané store v scope začnú načítavať po commite vlastniaceho komponentu na klientovi. Počkajte na scope.manager.ready vnútri hranice načítania v tomto komponente.
UkladanieMMKV_UNAVAILABLE v React Native.
Nainštalujte react-native-mmkv a jeho natívne závislosti a potom aplikáciu znova zostavte. V Expo použite development build. Store v pamäti fungujú bez MMKV.