====== Робота з LocalStorage у react ======
У додатках часто виникає задача зберігання значень у локальному сховищі, таких як обрані фільтри, вподобання теми і т. д.
===== Запис =====
- збережемо кількість кліків між перезавантаженнями сторінки. Кожного разу, коли змінюється значення стану clicks, компонент оновлюється, і ми можемо записати ефект.
- У ефекті додаємо код запису в локальне сховище. Ключ - це довільний рядок, наприклад, "saved-clicks", а значення - це стан clicks.
const App = () => {
const [clicks, setClicks] = useState(0);
useEffect(() => {
window.localStorage.setItem("saved-clicks", clicks);
}, [clicks]);
return (
);
};
===== Читання =====
Щоб прочитати значення з локального сховища, нам знадобиться не ефект, а щось цікавіше. Справа в тому, що ефекти виконуються асинхронно, після монтування компонента. Але нам потрібно синхронно прочитати значення з локального сховища, ще до монтування. Розберемося, як це зробити.
Ми вже знаємо, що в хук useState можна передати початкове значення стану.
const [clicks, setClicks] = useState(() => {
// Зчитуємо значення за ключем
const savedClicks = window.localStorage.getItem("saved-clicks");
// Якщо там щось є, повертаємо це
// значення як початкове значення стану
if (savedClicks !== null) {
return savedClicks;
}
// У протилежному випадку повертаємо
// яке-небудь значення за замовчуванням
return 0;
});