robota_z_localstorage_u_react

Робота з LocalStorage у react

У додатках часто виникає задача зберігання значень у локальному сховищі, таких як обрані фільтри, вподобання теми і т. д.

  1. збережемо кількість кліків між перезавантаженнями сторінки. Кожного разу, коли змінюється значення стану clicks, компонент оновлюється, і ми можемо записати ефект.
  2. У ефекті додаємо код запису в локальне сховище. Ключ - це довільний рядок, наприклад, «saved-clicks», а значення - це стан clicks.
const App = () => {
  const [clicks, setClicks] = useState(0);

  useEffect(() => {
    window.localStorage.setItem("saved-clicks", clicks);
  }, [clicks]);

  return (
    <div>
      <button onClick={() => setClicks(clicks + 1)}>
        You clicked {clicks} times
      </button>
      <button onClick={() => setClicks(0)}>Reset</button>
    </div>
  );
};

Щоб прочитати значення з локального сховища, нам знадобиться не ефект, а щось цікавіше. Справа в тому, що ефекти виконуються асинхронно, після монтування компонента. Але нам потрібно синхронно прочитати значення з локального сховища, ще до монтування. Розберемося, як це зробити. Ми вже знаємо, що в хук useState можна передати початкове значення стану.

const [clicks, setClicks] = useState(() => {
	// Зчитуємо значення за ключем
  const savedClicks = window.localStorage.getItem("saved-clicks");

	// Якщо там щось є, повертаємо це 
  // значення як початкове значення стану
  if (savedClicks !== null) {
    return savedClicks;
  }

	// У протилежному випадку повертаємо 
	// яке-небудь значення за замовчуванням
  return 0;
});
  • /sites/data/pages/robota_z_localstorage_u_react.txt
  • Последнее изменение: 2024/03/11 20:00
  • tro