restate / v1.0.0
Dažni klausimai
Atsakymai į dažniausius klausimus apie perpiešimą, išsaugojimą, scope ir klaidas restate.
Atitinkančių klausimų nėra
Pabandykite kitą žodį arba parodykite visus klausimus.
PagrindaiAr man reikia Provider?
Ne. store yra modulio lygio reikšmė; jį gali naudoti bet kuris jį importuojantis komponentas. Naudokite useRestateScope, kai būsena turi priklausyti komponento egzemplioriui.
PagrindaiKodėl mano komponentas perpiešiamas po kiekvieno pakeitimo?
Iškvietus hook be selector prenumeruojama visa reikšmė. Perduokite selector, kuris grąžina tik tai, ką rodo komponentas.
PagrindaiMano selector funkcija grąžina objektą ir perpiešiama kaskart.
Pagal Object.is naujas objektas niekada nelygus ankstesniam. Perduokite shallow kaip antrąjį argumentą arba pasirinkite laukus atskirai.
PagrindaiObjektas pasikeitė, bet niekas neatsinaujino.
set gavo tą patį objektą, todėl restate nematė pakeitimo. Iš set grąžinkite naują objektą ar masyvą.
IšsaugojimasKur turėčiau laukti išsaugotų duomenų?
Vieną kartą, kliento įėjimo taške: prieš atvaizduodami programą įvykdykite await restateManager.ready. Nuo tada komponentai tiesiogiai skaito išsaugotas reikšmes. store iš useRestateScope laukia savo scope.manager.ready.
IšsaugojimasKada duomenys įrašomi į saugyklą?
Tik kai iškviečiate save() arba, įjungus autoSave, po pakeitimų. Redagavimas keičia atmintį; status().dirty praneša, kad yra neišsaugotų pakeitimų.
IšsaugojimasautoSave ar save()?
autoSave naudokite nustatymams ir juodraščiams, kurie visada turi būti išsaugoti. save() naudokite, kai sprendžia naudotojas, pavyzdžiui, mygtuku Išsaugoti ar pateikiant formą. save() galite kviesti ir įjungus autoSave, pavyzdžiui, per pagehide.
KlaidosrestateManager.ready buvo atmestas. Ką daryti?
Jis atmetamas su BULK_OPERATION_FAILED, kai įrašo nepavyko perskaityti, perkelti ar patikrinti. error.failures išvardija kiekvieną store ir jo klaidą. Ištaisykite arba išvalykite įrašą, iškvieskite to store initialize() ir dar kartą kreipkitės į ready.
KlaidosMatau QUEUE_FULL arba STORAGE_TIMEOUT.
Saugykla lėtesnė nei darbas, kurį dedate į eilę. Venkite kviesti save() tankiame cikle – laukiantis išsaugojimas jau paima naujausią reikšmę – arba naudokite autoSave su laukimu. Jei reikia, pakoreguokite maxPendingOperations ir operationTimeoutMs.
KlaidosPo atjungimo pavėlavusi užklausa rašo į store.
set() ir reset() sunaikintame store ignoruojami, kaip React būsenos atnaujinimas po atjungimo. Prenumerata išmeta STORE_DESTROYED, o saugyklos komandos atmetamos.
ScopeMano scope store ignoruoja naujus props.
factory vykdoma vieną kartą, kaip useState inicializatorius. Atvaizduokite komponentą su key kiekvienam dokumentui, kad kiekvienas naujas dokumentas gautų naują scope.
ScopeKaip išvengti hidratacijos neatitikimų?
Serveryje ir kliente perduokite tuos pačius serverio duomenis kaip props ir iš jų sukurkite store useRestateScope. Pradinė reikšmė tampa serverio momentine kopija.
ScopeKodėl mano scope store nėra restateManager.ready?
Scope išsaugoti store pradeda įkėlimą, kai komponentas savininkas kliente atlieka commit. To komponento įkėlimo ribose palaukite scope.manager.ready.
IšsaugojimasMMKV_UNAVAILABLE React Native.
Įdiekite react-native-mmkv ir jo vietines priklausomybes, tada iš naujo sukurkite programą. Expo naudokite development build. Atminties store veikia be MMKV.