React Academy · Oppitunti

Tilan synkronointi localStoragen kanssa

Rakentakaa useLocalStorage-mukautettu hook, joka pitää React-tilan ja localStoragen kaksisuuntaisesti synkronoituna.

Oppitunti 2/413 vaihetta

Tilan synkronointi localStoragen kanssa on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.

Naiivi lähestymistapa ajautuu epätahdistukseen

Ensimmäinen ajatus voi olla lukea localStoragea yhdessä paikassa ja kirjoittaa siihen toisessa, mutta nämä voivat ajautua erilleen. Virheitä syntyy, jos tilapäivityksiä ei tallenneta tai tallennettuja arvoja ei välitetä tilaan.

Tarvitset yhden totuuden lähteen, joka pitää React-tilan ja tallennustilan jatkuvasti synkronoituna.

Mukautettu useLocalStorage-hook

Siisti ratkaisu on useLocalStorage-hook, joka käärii useState-hookin ja tallentaa muutokset automaattisesti. Se palauttaa arvon ja asettajan aivan kuten useState.

Komponentit käyttävät sitä täsmälleen tavallisen tilan tapaan, mutta saavat pysyvyyden automaattisesti.

Laiska alustajafunktio

localStoragen lukeminen on synkroninen operaatio, joten sitä ei pidä tehdä jokaisella renderöintikerralla. Välitä useState-hookille funktio eli laiska alustaja, jolloin luku tehdään vain kerran komponentin alustamisen yhteydessä.

Funktion sisällä jäsennetään tallennettu arvo tai palautetaan annettu oletusarvo.

Miksi laiska alustus on tärkeä

Jos lasket alkutilan suoraan argumentiksi, lauseke suoritetaan jokaisella renderöintikerralla, vaikka sen tulosta käytetään vain ensimmäisellä kerralla. Funktion kanssa React kutsuu sitä vain kerran.

localStorage-lukujen yhteydessä tämä estää toistuvan synkronisen työn pääsäikeessä jokaisella renderöintikerralla.

Synkronointi useEffectin avulla

Tallenna päivitykset lisäämällä useEffect, joka suoritetaan aina arvon muuttuessa ja kutsuu komentoa localStorage.setItem(key, JSON.stringify(value)).

Kun arvo lisätään riippuvuustaulukkoon, jokainen tilanmuutos kirjoitetaan automaattisesti tallennustilaan.

Funktionaaliset päivitykset välttävät vanhentuneet sulkeumat

Kun asetat arvon edellisen arvon perusteella, käytä funktionaalista muotoa setValue(prev => prev + 1). Näin vältät vanhentuneet sulkeumat, joissa kirjoitettaisiin vanha talteen otettu arvo.

Tämä on erityisen tärkeää tapahtumankäsittelijöissä ja efekteissä, jotka voivat säilyttää vanhentuneen tilannekuvan.

Tyhjän tallennetun arvon käsittely

getItem palauttaa arvon null, jos avainta ei ole olemassa. Alustajan on tunnistettava tämä ja käytettävä oletusarvoa sen sijaan, että se yrittäisi jäsentää null-arvon.

Tarkistus kuten stored != null ? JSON.parse(stored) : defaultValue käsittelee ensimmäisen käyttökerran hallitusti.

TypeScriptin geneeriset tyypit

TypeScriptissä hookista tehdään geneerinen: function useLocalStorage<T>(key: string, initial: T). Näin arvon tyyppi säilyy, ja hookin käyttäjät saavat täyden tyyppiturvallisuuden.

Palautettu monikko tyypitetään muodossa [T, Dispatch<SetStateAction<T>>], kuten useState.

Tallennettujen tietojen versiointi

Tietojen rakenne muuttuu ajan mittaan, ja vanhat tallennetut arvot voivat rikkoa uuden koodin. Tallenna tietojen rinnalle versionumero, jotta voit tunnistaa vanhentuneet muodot.

Tallenna esimerkiksi { version: 2, data } ja vertaa versiota lukemisen yhteydessä.

Tietojen poistaminen version ristiriidassa

Kun tallennettu versio ei vastaa nykyistä versiota, hylkää vanha arvo tai siirrä se uuteen muotoon sen sijaan, että luottaisit siihen. Yksinkertaisin strategia on poistaa vanhentunut merkintä ja käyttää oletusarvoja.

Tämä estää sovelluksen vanhemman version kirjoittamien tietojen aiheuttamat kaatumiset.

Hookin kokoaminen

Täydellinen useLocalStorage yhdistää laiskan alustajan, joka lukee ja jäsentää tiedot turvallisesti, funktionaalisia päivityksiä tukevan asettajan sekä versioituna kirjoittavan useEffect-hookin.

Tuloksena on suoraan käyttöön sopiva useState-korvaaja, joka säilyy uudelleenlatausten yli.

Pikatarkistus

Testaa, miten hyvin ymmärrät tilan alustamisen.

Kertaus

Opit rakentamaan useLocalStorage-hookin laiskalla alustajalla, tallentamaan muutokset useEffect-hookin avulla, käyttämään funktionaalisia päivityksiä vanhentuneiden sulkeumien välttämiseksi ja käsittelemään null-arvoja.

Näimme myös TypeScriptin geneeriset tyypit ja versioinnin vanhentuneiden tietojen turvallista poistamista varten.

Aloita maksutta

Opi React tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
88
Oppitunnit
324

Usein kysytyt kysymykset

Onko oppitunti ”Tilan synkronointi localStoragen kanssa” ilmainen?

Kyllä – oppitunnin ”Tilan synkronointi localStoragen kanssa” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Tilan synkronointi localStoragen kanssa”?

Rakentakaa useLocalStorage-mukautettu hook, joka pitää React-tilan ja localStoragen kaksisuuntaisesti synkronoituna. Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Tilan synkronointi localStoragen kanssa”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?

Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. localStorage-tietojen lukeminen ja kirjoittaminen Reactissa
  2. Tilan synkronointi localStoragen kanssa
  3. Storage-tapahtumien käsittely välilehtien välillä
  4. sessionStorage, IndexedDB ja oikean API:n valinta
← Takaisin: React Academy