restate / v1.0.0

Česta pitanja

Odgovori na najčešća pitanja o renderiranju, spremanju, scopeovima i pogreškama u restate.

OsnoveTreba li mi Provider?

Ne. Store je vrijednost na razini modula; može ga koristiti svaka komponenta koja ga uvozi. Koristite useRestateScope kad stanje treba pripadati instanci komponente.

OsnoveZašto se moja komponenta renderira pri svakoj promjeni?

Poziv hooka bez selector pretplaćuje se na cijelu vrijednost. Predajte selector koji vraća samo ono što komponenta prikazuje.

OsnoveMoj selector vraća objekt i renderira se svaki put.

Novi objekt prema Object.is nikad nije jednak prethodnom. Predajte shallow kao drugi argument ili odabirite polja zasebno.

OsnoveObjekt se promijenio, ali ništa se nije ažuriralo.

set je dobio isti objekt, pa restate nije vidio promjenu. Iz set vratite novi objekt ili niz.

SpremanjeGdje čekati spremljene podatke?

Jednom, u ulaznoj točki klijenta: pokrenite await restateManager.ready prije renderiranja aplikacije. Od tada komponente izravno čitaju spremljene vrijednosti. Storeovi u useRestateScope čekaju vlastiti scope.manager.ready.

SpremanjeKada se podaci zapisuju u spremište?

Samo kad pozovete save() ili, uz uključen autoSave, nakon promjena. Uređivanje mijenja memoriju; status().dirty govori da postoje nespremljene promjene.

SpremanjeautoSave ili save()?

autoSave koristite za postavke i skice koje se uvijek trebaju spremati. save() koristite kad odlučuje korisnik, primjerice gumbom Spremi ili slanjem obrasca. save() možete pozvati i uz uključen autoSave, primjerice na pagehide.

SpremanjeSpremanje ne uspijeva u privatnom prozoru ili tijekom SSR.

Kad spremište nije dostupno, store i dalje radi u memoriji, status().available je false, a save() se odbija sa STORAGE_UNAVAILABLE. Pokretanje ipak uspijeva.

PogreškerestateManager.ready je odbijen. Što sada?

Odbija se s BULK_OPERATION_FAILED kad se zapis nije mogao pročitati, migrirati ili validirati. error.failures navodi svaki store i njegovu pogrešku. Popravite ili obrišite zapis, pozovite initialize() tog storea i ponovno pristupite ready.

PogreškeVidim QUEUE_FULL ili STORAGE_TIMEOUT.

Spremište je sporije od posla koji stavljate u red. Izbjegavajte poziv save() u uskoj petlji — spremanje na čekanju već uzima najnoviju vrijednost — ili koristite autoSave s čekanjem. Po potrebi podesite maxPendingOperations i operationTimeoutMs.

PogreškeZakašnjeli zahtjev zapisuje u store nakon demontiranja.

set() i reset() na uništenom storeu zanemaruju se, kao ažuriranje Reactova stanja nakon demontiranja. Pretplata baca STORE_DESTROYED, a naredbe spremišta se odbijaju.

ScopeoviMoj store u scopeu zanemaruje nove props.

Factory se pokreće jednom, kao inicijalizator useState. Renderirajte komponentu s key za svaki dokument, kako bi svaki novi dokument dobio novi scope.

ScopeoviKako izbjeći neusklađenost pri hidrataciji?

Predajte iste podatke s poslužitelja kao props na poslužitelju i klijentu te iz njih stvorite store u useRestateScope. Početna vrijednost postaje snimka s poslužitelja.

ScopeoviZašto moj store u scopeu nije u restateManager.ready?

Spremljeni storeovi u scopeu počinju učitavanje nakon što se komponenta vlasnik committa na klijentu. Pričekajte scope.manager.ready unutar granice učitavanja u toj komponenti.

SpremanjeMMKV_UNAVAILABLE u React Nativeu.

Instalirajte react-native-mmkv i njegove nativne ovisnosti, a zatim ponovno izgradite aplikaciju. U Expou koristite development build. Storeovi u memoriji rade bez MMKV.

Pretraži dokumentaciju

Pretražujte naslove, opise i tekst svih vodiča.