Volver a la Biblioteca
frontend javascript

Hook: useLocalStorage

Persistir estado en el navegador automáticamente.

#React#Hooks#Storage#UX

Descripción

Este hook funciona igual que useState, pero sincroniza el valor con localStorage para que la información no se pierda al recargar la página (ideal para temas oscuros o preferencias de usuario).

El Hechizo (Código):

import { useState, useEffect } from "react";

function useLocalStorage(key, initialValue) {
  // 1. Inicializar estado con el valor guardado o el inicial
  const [storedValue, setStoredValue] = useState(() => {
    try {
      const item = window.localStorage.getItem(key);
      return item ? JSON.parse(item) : initialValue;
    } catch (error) {
      console.error(error);
      return initialValue;
    }
  });

  // 2. Escuchar cambios y actualizar LocalStorage
  const setValue = (value) => {
    try {
      // Permitir que el valor sea una función (igual que useState)
      const valueToStore = value instanceof Function ? value(storedValue) : value;
      
      setStoredValue(valueToStore);
      window.localStorage.setItem(key, JSON.stringify(valueToStore));
    } catch (error) {
      console.error(error);
    }
  };

  return [storedValue, setValue];
}

export default useLocalStorage;
* Inscrito por el Artífice * REGISTRO NO. GR-USE-LOCAL-STORAGE