React Academy · Les

State synchroniseren met localStorage

Bouw een aangepaste useLocalStorage-hook die React-state en localStorage bidirectioneel gesynchroniseerd houdt.

Les 2 van 413 stappen

State synchroniseren met localStorage is een gratis React Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject React Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus React Academy bevat in totaal 4 lessen.

De naïeve aanpak raakt niet meer synchroon

Een eerste ingeving is om localStorage op één plek uit te lezen en op een andere plek te schrijven, maar die twee kunnen uit elkaar lopen. Statusupdates die vergeten op te slaan, of opgeslagen waarden die niet in de status terugkomen, leiden tot fouten.

Je wilt één bron van waarheid die de React-status en opslag synchroon houdt.

De aangepaste useLocalStorage-hook

De nette oplossing is een useLocalStorage-hook die useState omwikkelt en wijzigingen automatisch opslaat. De hook geeft net als useState een waarde en setter terug.

Gebruikers van de hook gebruiken deze precies zoals normale status, maar krijgen persistentie zonder extra werk.

Luie initialisatiefunctie

Het uitlezen van localStorage is synchroon werk, dus je moet dit niet bij elke render doen. Geef een functie door aan useState, de luie initializer, zodat het uitlezen maar één keer bij het mounten plaatsvindt.

Binnen die functie parseer je de opgeslagen waarde of geef je de opgegeven standaardwaarde terug.

Waarom luie initialisatie belangrijk is

Als je de beginstatus rechtstreeks als argument berekent, wordt die uitdrukking bij elke render uitgevoerd, ook al wordt de waarde na de eerste render genegeerd. Met een functie roept React deze maar één keer aan.

Voor het uitlezen van localStorage voorkomt dit bij elke render herhaald synchroon werk op de hoofdthread.

Synchroniseren via useEffect

Voeg om wijzigingen op te slaan een useEffect toe die wordt uitgevoerd wanneer de waarde verandert en localStorage.setItem(key, JSON.stringify(value)) aanroept.

Als je de waarde in de afhankelijkheidsarray zet, wordt elke statuswijziging automatisch naar de opslag geschreven.

Functionele updates voorkomen verouderde closures

Gebruik bij het instellen van een waarde op basis van de vorige waarde de functionele vorm setValue(prev => prev + 1). Zo voorkom je verouderde closures waarbij een eerder vastgelegde waarde zou worden geschreven.

Dit is vooral belangrijk binnen gebeurtenisafhandelaars en effecten die mogelijk een verouderde momentopname vastleggen.

Een opgeslagen null-waarde afhandelen

getItem geeft null terug als de sleutel niet bestaat. Je initialisatiefunctie moet dit detecteren en terugvallen op de standaardwaarde in plaats van null te proberen te parsen.

Een controle zoals stored != null ? JSON.parse(stored) : defaultValue handelt het eerste bezoek netjes af.

Generieke typen in TypeScript

In TypeScript maak je de hook generiek: function useLocalStorage<T>(key: string, initial: T). Hierdoor blijft het type van de waarde behouden en krijgen gebruikers volledige typeveiligheid.

De teruggegeven tupel heeft het type [T, Dispatch<SetStateAction<T>>], net als bij useState.

Versiebeheer van opgeslagen gegevens

Na verloop van tijd verandert je gegevensstructuur en kunnen oude opgeslagen waarden nieuwe code breken. Sla naast de gegevens een versiesleutel op, zodat je verouderde indelingen kunt detecteren.

Sla bijvoorbeeld { version: 2, data } op en vergelijk de versie bij het uitlezen.

Verwijderen bij een afwijkende versie

Als de opgeslagen versie niet overeenkomt met de huidige versie, verwijder je de oude waarde of zet je deze om in plaats van erop te vertrouwen. De eenvoudigste strategie is om de verouderde invoer te verwijderen en terug te vallen op de standaardwaarden.

Zo voorkom je fouten door gegevens die door een oudere versie van je app zijn geschreven.

De hook opbouwen

Een complete useLocalStorage-hook combineert een luie initialisatiefunctie die gegevens veilig uitleest en parseert, een setter die functionele updates ondersteunt en een useEffect die de gegevens met versiebeheer naar de opslag schrijft.

Het resultaat is een directe vervanging voor useState die vernieuwingen overleeft.

Korte controle

Toets je begrip van statusinitialisatie.

Samenvatting

Je hebt geleerd hoe je een useLocalStorage-hook bouwt met een luie initialisatiefunctie, wijzigingen via useEffect opslaat, functionele updates gebruikt om verouderde closures te voorkomen en null-waarden afhandelt.

Ook heb je generieke typen in TypeScript en versiebeheer gezien om verouderde gegevens veilig te verwijderen.

Gratis beginnen

Leer React met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
88
Lessen
324

Veelgestelde vragen

Is de les “State synchroniseren met localStorage” gratis?

Ja — de volledige tekst van “State synchroniseren met localStorage” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus React Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus React Academy bevat in totaal 4 lessen.

Wat leer ik in “State synchroniseren met localStorage”?

Bouw een aangepaste useLocalStorage-hook die React-state en localStorage bidirectioneel gesynchroniseerd houdt. Je oefent met React Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met React Academy te beginnen?

Ervaring vooraf is niet nodig. React Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “State synchroniseren met localStorage”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over React Academy?

Ja. Elke les over React Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. localStorage lezen en schrijven in React
  2. State synchroniseren met localStorage
  3. Storage-events tussen tabbladen afhandelen
  4. sessionStorage, IndexedDB en de juiste API kiezen
← Terug naar React Academy