Odczytywanie i zapisywanie w localStorage w React
Proszę bezpiecznie uzyskiwać dostęp do localStorage w hookach React, obsługiwać środowiska SSR i serializować złożony stan.
Odczytywanie i zapisywanie w localStorage w React to bezpłatna lekcja React Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.
API localStorage
localStorage to wbudowany magazyn przeglądarki z czterema podstawowymi metodami: setItem(key, value), getItem(key), removeItem(key) i clear(). Dane są zachowywane po ponownym załadowaniu strony i ponownym uruchomieniu przeglądarki.
Magazyn znajduje się w obiekcie window i jest przypisany do źródła, co oznacza, że każda domena ma własny, odizolowany magazyn.
Synchroniczne i blokujące
Każde wywołanie localStorage działa synchronicznie w głównym wątku. Odczytywanie lub zapisywanie dużych ilości danych może blokować renderowanie i sprawiać, że interfejs działa niepłynnie.
Dlatego należy przechowywać niewielkie wartości i unikać zapisywania danych przy każdym naciśnięciu klawisza lub zdarzeniu przewijania.
Przechowuje wyłącznie ciągi znaków
localStorage może przechowywać wyłącznie ciągi znaków. Aby zapisać obiekt lub tablicę, należy najpierw zserializować je za pomocą JSON.stringify(value), a dopiero potem wywołać setItem.
Bezpośrednie zapisanie wartości innego typu powoduje jej konwersję, więc obiekt staje się bezużytecznym ciągiem [object Object].
Parsowanie z obsługą błędów
Podczas odczytu wywołuje się JSON.parse(localStorage.getItem(key)), ale parsowanie może zgłosić wyjątek, jeśli zapisany ciąg jest uszkodzony lub został zapisany przez inne źródło.
Parsowanie należy umieścić w bloku try/catch i użyć wartości domyślnej jako rozwiązania awaryjnego, aby błędny wpis nie spowodował awarii komponentu.
Sprawdzanie dostępności
localStorage nie zawsze można używać: podczas renderowania po stronie serwera window nie istnieje, a niektóre tryby przeglądania prywatnego zgłaszają wyjątek podczas zapisu. Dostęp należy zabezpieczyć sprawdzeniem funkcji.
Bezpieczny test polega na użyciu try/catch, ustawieniu i usunięciu tymczasowego klucza oraz zwróceniu wartości false, jeśli wystąpi wyjątek.
Limit pojemności wynoszący ~5 MB
Większość przeglądarek ogranicza localStorage do około pięciu megabajtów na origin. Przekroczenie tego limitu powoduje zgłoszenie błędu QuotaExceededError podczas zapisu.
Dzięki temu localStorage nadaje się do przechowywania niewielkich ilości danych, ale jest złym wyborem w przypadku obrazów, dużych zbiorów danych lub buforowanych odpowiedzi API.
Odpowiednie dane
Dobrymi kandydatami są niewielkie, niewrażliwe dane dotyczące interfejsu użytkownika i stanu użytkownika: preferencje motywu, stan zwinięcia panelu bocznego, ostatnio używane filtry, zamknięte banery oraz niezapisane wersje robocze formularzy.
Są to wartości, które powinny przetrwać ponowne załadowanie strony, ale nie wymagają komunikacji z serwerem.
Nieodpowiednie dane
Należy unikać przechowywania sekretów, takich jak tokeny lub hasła, ponieważ każdy skrypt na stronie może odczytać localStorage, co czyni go podatnym na ataki XSS. Należy również unikać dużych obiektów i nadrzędnego stanu serwera.
Wrażliwe dane uwierzytelniania powinny znajdować się w cookies httpOnly, a kanoniczne dane — na serwerze.
localStorage a sessionStorage
Oba mechanizmy udostępniają ten sam interfejs API, ale sessionStorage jest czyszczony po zamknięciu karty i nie jest współdzielony między kartami. localStorage zachowuje dane bezterminowo i jest współdzielony przez wszystkie karty tego samego origin.
Należy wybrać sessionStorage dla krótkotrwałych danych właściwych dla karty, a localStorage dla trwałych preferencji.
a cookies i IndexedDB
Cookies są małe i wysyłane przy każdym żądaniu HTTP, dzięki czemu nadają się do uwierzytelniania, ale w przypadku ogólnych danych powodują niepotrzebne zużycie przepustowości. IndexedDB to asynchroniczna baza danych przeznaczona do przechowywania dużych, uporządkowanych danych, znacznie przekraczających limit 5 MB.
Cookies należy wybierać do uwierzytelniania odczytywanego przez serwer, localStorage do niewielkich preferencji klienta, a IndexedDB do dużych lub złożonych danych.
Prosty wzorzec odczytu i zapisu
Minimalna funkcja pomocnicza zapisuje dane za pomocą localStorage.setItem(key, JSON.stringify(value)), a odczytuje je za pomocą zabezpieczonego try/catch wokół JSON.parse(localStorage.getItem(key)), zwracając wartość domyślną w razie błędu.
Ten niewielki wrapper skupia serializację i obsługę błędów w jednym miejscu.
Sprawdzenie wiedzy
Sprawdź swoją wiedzę na temat typów danych w localStorage.
Podsumowanie
Poznałeś interfejs API localStorage, dowiedziałeś się, że działa synchronicznie, przechowuje wyłącznie ciągi znaków i ma limit wynoszący około 5 MB, a także nauczyłeś się bezpiecznie parsować dane oraz sprawdzać dostępność mechanizmu na potrzeby SSR i trybu prywatnego.
Porównałeś również localStorage z sessionStorage, cookies i IndexedDB, aby dobierać odpowiedni magazyn danych.
Często zadawane pytania
Czy lekcja „Odczytywanie i zapisywanie w localStorage w React” jest bezpłatna?
Tak — pełny tekst „Odczytywanie i zapisywanie w localStorage w React” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Odczytywanie i zapisywanie w localStorage w React”?
Proszę bezpiecznie uzyskiwać dostęp do localStorage w hookach React, obsługiwać środowiska SSR i serializować złożony stan. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć React Academy?
Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Odczytywanie i zapisywanie w localStorage w React”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?
Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Odczytywanie i zapisywanie w localStorage w React
- Synchronizowanie stanu z localStorage
- Obsługa zdarzeń pamięci między kartami
- sessionStorage, IndexedDB i wybór właściwego API