Local Storage con React.js

Clase 13 de 34Curso de React.js

Resumen

¿Cómo se utiliza el Local Storage para la persistencia de datos?

Local Storage es una API del navegador que permite almacenar datos de manera persistente. Esto significa que la información guardada no se pierde incluso si se cierra la pestaña, el navegador o el computador. Cuando volvamos a abrir la aplicación, los datos estarán allí. En este contexto, el uso de Local Storage es fundamental para mantener la información de nuestra aplicación, como los "To-Dos", asegurando que los cambios realizados por el usuario permanezcan disponibles en sesiones futuras.

¿Qué métodos son fundamentales en el Local Storage?

Local Storage proporciona varios métodos clave:

  • getItem: Permite leer los datos almacenados utilizando el nombre del item.
  • setItem: Guarda o actualiza un item en Local Storage.
  • removeItem: Borra un item específico del almacenamiento.

Estos métodos permiten que nuestra aplicación interactúe eficazmente con el almacenamiento local, posibilitando la persistencia de datos.

¿Cómo integramos Local Storage en una aplicación?

Para integrar Local Storage en nuestra aplicación y asegurar la persistencia de los "To-Dos", seguimos estos pasos:

  1. Comenzamos por comentar los datos por defecto en nuestro código, lo que permitirá inicializar nuestra lista desde Local Storage.
  2. Visualizamos y manejamos los datos en la consola. Utilizamos Local Storage para ver, agregar y eliminar información.
  3. Convertimos estructuras complejas a string con JSON.stringify. Local Storage solo almacena cadenas de texto. Necesitamos convertir objetos y arrays a strings antes de almacenarlos.
  4. Para recuperar los datos al tipo original, usamos JSON.parse. Esto transforma el string de vuelta a su estructura JavaScript original.

A continuación, te mostramos un ejemplo de cómo se ve la implementación básica de almacenar y recuperar datos usando Local Storage en el navegador:

// Guardar datos en Local Storage
const todos = [{ task: 'Cortar cebolla' }, { task: 'Cortar tomate' }];
localStorage.setItem('todos-version1', JSON.stringify(todos));

// Recuperar datos de Local Storage
const storedTodos = JSON.parse(localStorage.getItem('todos-version1'));
console.log(storedTodos);

¿Cómo manejamos errores y casos iniciales?

Al implementar Local Storage, es crucial prever escenarios donde el item a obtener no exista, para evitar errores que rompan la aplicación:

  • Inicialización VACÍA: Si el item no existe, por defecto asignamos un array vacío para que la aplicación se mantenga funcional.
  • Errores comunes: Si se rompe algo, podemos eliminar el item del almacenamiento y reiniciarlo para evitar conflictos.
// Inicializamos los datos al cargar la aplicación
function loadInitialData() {
  let parsedTodos;
  const localStorageTodos = localStorage.getItem('todos-version1');
  
  if (!localStorageTodos) {
    parsedTodos = []; // Array vacío como estado inicial
    localStorage.setItem('todos-version1', JSON.stringify(parsedTodos));
  } else {
    parsedTodos = JSON.parse(localStorageTodos);
  }

  return parsedTodos;
}

¿Cómo asegurar que Local Storage y el estado de la aplicación estén sincronizados?

Para mantener sincronizados el estado de la aplicación y el almacenamiento local, implementamos una función que maneje ambos simultáneamente:

function saveTodos(newTodos) {
  // Actualizar el estado
  setTodos(newTodos);
  // Persistir en local storage
  localStorage.setItem('todos-version1', JSON.stringify(newTodos));
}

Al usar saveTodos para cambiar el estado de la aplicación, cualquier interacción que modifique la lista de "To-Dos" actualizará tanto el estado local como el almacenamiento, asegurando que se mantengan en sincronía.

¡Ahora tienes las herramientas para implementar Local Storage e incrementar la persistencia de datos en tus aplicaciones web! Sigue explorando y aplicando estas técnicas para mejorar la experiencia del usuario y el funcionamiento de tus apps.