localStorage
Aprende a guardar datos en el navegador para que persistan incluso después de cerrar la página.
1. ¿Qué es localStorage?
localStorage es un espacio de almacenamiento en el navegador que te permite guardar datos de forma permanente.
Los datos se guardan como pares clave-valor (como un objeto) y permanecen aunque cierres el navegador.
Ventajas
- • Los datos persisten aunque cierres el navegador
- • Fácil de usar (solo 4 métodos principales)
- • No requiere configuración
- • Disponible en todos los navegadores modernos
Limitaciones
- • Máximo 5-10 MB de datos
- • Solo guarda texto (strings)
- • Específico para cada dominio
- • Puede ser borrado por el usuario
2. Métodos principales
localStorage.setItem() - Guardar datos
1// Guardar un valor2localStorage.setItem('nombre', 'Juan');3localStorage.setItem('edad', '25');4localStorage.setItem('ciudad', 'Madrid');5 6console.log('Datos guardados');localStorage.getItem() - Obtener datos
1// Obtener un valor2const nombre = localStorage.getItem('nombre');3const edad = localStorage.getItem('edad');4 5console.log('Nombre:', nombre); // "Juan"6console.log('Edad:', edad); // "25"7 8// Si la clave no existe, devuelve null9const apellido = localStorage.getItem('apellido');10console.log(apellido); // nulllocalStorage.removeItem() - Eliminar un dato
1// Eliminar un dato específico2localStorage.removeItem('edad');3 4console.log(localStorage.getItem('edad')); // nulllocalStorage.clear() - Borrar todo
1// Eliminar TODOS los datos del localStorage2localStorage.clear();3 4console.log('Todo el localStorage ha sido borrado');3. Guardar objetos y arrays
Problema: localStorage solo guarda texto (strings). Para guardar objetos o arrays necesitas convertirlos.
Solución: Usa JSON.stringify() para guardar y JSON.parse() para recuperar.
Guardar un objeto:
1// Objeto que queremos guardar2const usuario = {3 nombre: 'Ana',4 edad: 28,5 email: 'ana@example.com',6 premium: true7};8 9// GUARDAR: Convertir a string con JSON.stringify()10localStorage.setItem('usuario', JSON.stringify(usuario));11 12console.log('Usuario guardado');Recuperar el objeto:
1// OBTENER: Convertir de string a objeto con JSON.parse()2const usuarioGuardado = localStorage.getItem('usuario');3const usuario = JSON.parse(usuarioGuardado);4 5console.log(usuario.nombre); // "Ana"6console.log(usuario.edad); // 287console.log(usuario.premium); // trueGuardar un array:
1// Array de tareas2const tareas = [3 { id: 1, texto: 'Estudiar JavaScript', completada: false },4 { id: 2, texto: 'Hacer ejercicio', completada: true },5 { id: 3, texto: 'Leer un libro', completada: false }6];7 8// Guardar9localStorage.setItem('tareas', JSON.stringify(tareas));10 11// Recuperar12const tareasGuardadas = JSON.parse(localStorage.getItem('tareas'));13console.log(tareasGuardadas); // Array con las 3 tareas ¡Error común! Si intentas guardar un objeto directamente sin JSON.stringify(), se guardará como "[object Object]" y perderás todos los datos.
4. Ejemplo práctico: Contador persistente
Vamos a crear un contador que guarda su valor y lo mantiene aunque recargues la página.
1// Obtener el contador guardado o iniciar en 02let contador = parseInt(localStorage.getItem('contador')) || 0;3 4// Mostrar el valor actual5console.log('Contador actual:', contador);6 7// Función para incrementar8function incrementar() {9 contador++;10 localStorage.setItem('contador', contador);11 console.log('Contador:', contador);12}13 14// Función para resetear15function resetear() {16 contador = 0;17 localStorage.setItem('contador', 0);18 console.log('Contador reseteado');19}20 21// Probar22incrementar(); // 123incrementar(); // 224incrementar(); // 325// Si recargas la página, el contador sigue en 35. localStorage vs sessionStorage
localStorage
- Los datos persisten para siempre
- Se mantiene aunque cierres el navegador
- Compartido entre todas las pestañas del mismo dominio
- Ideal para: preferencias, temas, datos de usuario
sessionStorage
- Los datos duran solo mientras la pestaña esté abierta
- Se borra al cerrar la pestaña
- No se comparte entre pestañas
- Ideal para: datos temporales de sesión
Mismo uso, diferente duración:
1// localStorage - persiste para siempre2localStorage.setItem('tema', 'oscuro');3 4// sessionStorage - se borra al cerrar la pestaña5sessionStorage.setItem('temp', 'valor temporal');6 7// Los métodos son idénticos:8// .setItem(), .getItem(), .removeItem(), .clear()Ejercicio práctico
Lista de Tareas con localStorage
Crea una aplicación de lista de tareas que guarde las tareas en localStorage para que no se pierdan al recargar la página.
1 HTML: Estructura básica
Crea un archivo HTML con:
- ▸ Un input con id
nueva-tareapara escribir tareas - ▸ Un botón con id
agregar-btnpara agregar tareas - ▸ Un ul con id
lista-tareaspara mostrar las tareas - ▸ Un botón con id
limpiar-btnpara borrar todas las tareas
2 JavaScript: Funcionalidad
2.1 Cargar tareas al inicio
- • Al cargar la página, obtén las tareas de
localStorage - • Si no hay tareas guardadas, inicia con un array vacío
[] - • Usa
JSON.parse()para convertir el string a array
2.2 Función para agregar tarea
- • Obtén el texto del input
- • Agrégalo al array de tareas con
.push() - • Guarda el array en localStorage con
JSON.stringify() - • Llama a la función que renderiza la lista
2.3 Función para renderizar tareas
- • Limpia el
ulconinnerHTML = '' - • Recorre el array de tareas con
forEach - • Para cada tarea, crea un
liy agrégalo alul
2.4 Función para limpiar todas las tareas
- • Borra las tareas de localStorage con
removeItem() - • Limpia el array (asígnale
[]) - • Renderiza la lista vacía
3 Probar la persistencia
- • Agrega varias tareas
- • Recarga la página (F5)
- • Las tareas deben seguir ahí
- • Abre DevTools → Application → Local Storage para ver los datos guardados
Tip: Usa una clave descriptiva como 'tareas' o 'misTareas' para guardar en localStorage
Extra: Agrega un botón para eliminar tareas individuales (más avanzado)
Resumen
setItem(), getItem(), removeItem(), clear() JSON.stringify() para guardar objetos y JSON.parse() para recuperarlos