State synchroniseren met localStorage
Bouw een aangepaste useLocalStorage-hook die React-state en localStorage bidirectioneel gesynchroniseerd houdt.
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.
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
- localStorage lezen en schrijven in React
- State synchroniseren met localStorage
- Storage-events tussen tabbladen afhandelen
- sessionStorage, IndexedDB en de juiste API kiezen