restate / v1.0.0

Usein kysytyt kysymykset

Vastaukset yleisimpiin kysymyksiin restaten renderöinnistä, tallennuksesta, scopeista ja virheistä.

PerusteetTarvitsenko Providerin?

Et. Store on moduulitason arvo; mikä tahansa sen importtaava komponentti voi käyttää sitä. Käytä useRestateScopea, kun tilan täytyy kuulua komponentti-instanssille.

PerusteetMiksi komponenttini renderöityy jokaisella muutoksella?

Hookin kutsuminen ilman selectoria tilaa koko arvon. Anna selector, joka palauttaa vain sen, mitä komponentti näyttää.

PerusteetOma selector palauttaa objektin ja renderöityy joka kerta.

Object.is-vertailun mukaan uusi objekti ei ole koskaan sama kuin edellinen. Anna shallow toisena argumenttina tai valitse kentät erikseen.

PerusteetObjekti muuttui, mutta mikään ei päivittynyt.

set sai saman objektin, joten restate ei nähnyt muutosta. Palauta setistä uusi objekti tai taulukko.

TallennusMissä odotan tallennettuja tietoja?

Kerran, asiakkaan aloituspisteessä: aja await restateManager.ready ennen sovelluksen renderöintiä. Siitä eteenpäin komponentit lukevat tallennetut arvot suoraan. useRestateScopen storet odottavat omaa scope.manager.ready-arvoaan.

TallennusMilloin tiedot kirjoitetaan tallennustilaan?

Vain kun kutsut save()-funktiota tai, autoSaven ollessa päällä, muutosten jälkeen. Muokkaaminen muuttaa muistia; status().dirty kertoo, että tallentamattomia muutoksia on.

TallennusautoSave vai save()?

Käytä autoSavea asetuksille ja luonnoksille, jotka on aina tallennettava. Käytä save()-funktiota, kun käyttäjä päättää, esimerkiksi Tallenna-painikkeella tai lomakkeen lähetyksellä. Voit kutsua save()-funktiota myös autoSaven ollessa päällä, esimerkiksi pagehide-tapahtumassa.

TallennusTallennus epäonnistuu yksityisessä ikkunassa tai SSR:n aikana.

Kun tallennustila ei ole käytettävissä, store toimii edelleen muistissa, status().available on false ja save() hylätään virheellä STORAGE_UNAVAILABLE. Käynnistys onnistuu silti.

VirheetrestateManager.ready hylättiin. Mitä nyt?

Se hylätään virheellä BULK_OPERATION_FAILED, kun tietuetta ei voitu lukea, siirtää tai validoida. error.failures luettelee jokaisen storen ja sen virheen. Korjaa tai tyhjennä tietue, kutsu kyseisen storen initialize()-funktiota ja käytä readyä uudelleen.

VirheetNäen QUEUE_FULL- tai STORAGE_TIMEOUT-virheen.

Tallennustila on hitaampi kuin jonoon lisäämäsi työ. Vältä save()-kutsuja tiukassa silmukassa — odottava tallennus ottaa jo uusimman arvon — tai käytä autoSavea odotuksella. Säädä tarvittaessa maxPendingOperations- ja operationTimeoutMs-arvoja.

VirheetIrrottamisen jälkeen myöhässä saapuva pyyntö kirjoittaa storeen.

set() ja reset() tuhotussa storessa ohitetaan, kuten Reactin tilapäivitys irrottamisen jälkeen. Tilaaminen heittää STORE_DESTROYED-virheen, ja tallennuskomennot hylätään.

ScopetScopen storeni ei huomioi uusia propseja.

Factory suoritetaan kerran, kuten useStaten alustaja. Renderöi komponentti dokumenttikohtaisella keyllä, jotta jokainen uusi dokumentti saa uuden scopen.

ScopetMiten vältän hydraatioerot?

Välitä sama palvelindata propseina palvelimella ja asiakkaalla ja luo store siitä useRestateScopessa. Alkuarvosta tulee palvelimen tilannekuva.

ScopetMiksi scopen storeni ei ole restateManager.ready-arvossa?

Scopen tallennetut storet aloittavat latauksen, kun omistava komponentti commitoidaan asiakkaalla. Odota scope.manager.ready-arvoa latausrajan sisällä kyseisessä komponentissa.

TallennusMMKV_UNAVAILABLE React Nativessa.

Asenna react-native-mmkv ja sen natiiviriippuvuudet ja koosta sovellus uudelleen. Expossa käytä development buildia. Muistissa olevat storet toimivat ilman MMKV:tä.

Hae dokumentaatiosta

Hae kaikkien oppaiden otsikoista, kuvauksista ja sisällöstä.