restate / v1.0.0

Gyakori kérdések

Válaszok a restate renderelésével, mentésével, scope-jaival és hibáival kapcsolatos leggyakoribb kérdésekre.

AlapokSzükségem van Providerre?

Nem. A store modulszintű érték; bármelyik komponens használhatja, amely importálja. Használja a useRestateScope-ot, ha az állapotnak egy komponenspéldányhoz kell tartoznia.

AlapokMiért renderel a komponensem minden változáskor?

A hook selector nélküli hívása a teljes értékre iratkozik fel. Adjon át egy selectort, amely csak azt adja vissza, amit a komponens megjelenít.

AlapokA selector függvényem objektumot ad vissza, és minden alkalommal renderel.

Az Object.is szerint egy új objektum soha nem egyenlő az előzővel. Adja meg második argumentumként a shallow-t, vagy válassza ki a mezőket külön.

AlapokAz objektum megváltozott, de semmi sem frissült.

A set ugyanazt az objektumot kapta, így a restate nem látott változást. Adjon vissza új objektumot vagy tömböt a set-ből.

MentésHol várjak a mentett adatokra?

Egyszer, a kliens belépési pontján: futtassa az await restateManager.ready lépést az alkalmazás renderelése előtt. Onnantól a komponensek közvetlenül olvassák a mentett értékeket. A useRestateScope-ban lévő store-ok a saját scope.manager.ready-jükre várnak.

MentésMikor íródnak ki az adatok a tárolóba?

Csak akkor, ha meghívja a save() metódust, vagy bekapcsolt autoSave esetén a változások után. A szerkesztés a memóriát módosítja; a status().dirty jelzi, hogy vannak nem mentett változások.

MentésautoSave vagy save()?

Használja az autoSave-et olyan beállításokhoz és piszkozatokhoz, amelyeket mindig menteni kell. A save()-et akkor használja, amikor a felhasználó dönt, például egy Mentés gombbal vagy egy űrlap elküldésével. Bekapcsolt autoSave mellett is meghívhatja a save() metódust, például pagehide eseménykor.

MentésA mentés sikertelen privát ablakban vagy SSR közben.

Ha a tároló nem érhető el, a store tovább fut a memóriában, a status().available értéke false, a save() pedig STORAGE_UNAVAILABLE hibával utasul el. Az indulás ettől még sikeres.

HibákA restateManager.ready elutasult. Mi a teendő?

BULK_OPERATION_FAILED hibával utasul el, ha egy rekordot nem lehetett beolvasni, migrálni vagy ellenőrizni. Az error.failures felsorol minden store-t és annak hibáját. Javítsa vagy törölje a rekordot, hívja meg az adott store initialize() metódusát, és érje el újra a ready-t.

HibákQUEUE_FULL vagy STORAGE_TIMEOUT hibát látok.

A tároló lassabb, mint a sorba állított munka. Kerülje a save() szoros ciklusban való hívását — a függő mentés már a legújabb értéket veszi át —, vagy használjon várakozó autoSave-et. Szükség esetén módosítsa a maxPendingOperations és az operationTimeoutMs értékét.

HibákEgy leválasztás után későn érkező kérés ír a store-ba.

A megsemmisített store-on a set() és a reset() hatástalan, mint egy React-állapotfrissítés leválasztás után. A feliratkozás STORE_DESTROYED hibát dob, a tárolóparancsok pedig elutasulnak.

Scope-okA scope-os store-om figyelmen kívül hagyja az új props-ot.

A factory egyszer fut, mint a useState inicializálója. Renderelje a komponenst dokumentumonkénti key-jel, hogy minden új dokumentum új scope-ot kapjon.

Scope-okHogyan kerülhetem el a hidratálási eltéréseket?

Adja át ugyanazokat a szerveradatokat props-ként a szerveren és a kliensen, és ezekből hozza létre a store-t a useRestateScope-ban. A kezdőérték lesz a szerver pillanatképe.

Scope-okMiért nincs a scope-os store-om a restateManager.ready-ben?

A scope-ban lévő mentett store-ok akkor kezdik a betöltést, amikor a tulajdonos komponens commitol a kliensen. Várjon a scope.manager.ready-re egy betöltési határon belül abban a komponensben.

MentésMMKV_UNAVAILABLE React Native alatt.

Telepítse a react-native-mmkv csomagot és natív függőségeit, majd buildelje újra az alkalmazást. Expóban használjon development buildet. A memóriabeli store-ok MMKV nélkül is működnek.

Keresés a dokumentációban

Keresés az összes útmutató címében, leírásában és szövegében.