0Pricing
React Academy · Lección

Gestión de eventos de almacenamiento entre pestañas

Reaccione a los cambios de localStorage en otras pestañas del navegador mediante el listener del evento storage.

Gestión de eventos de almacenamiento entre pestañas es una lección gratuita de React Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

El problema de los datos obsoletos entre pestañas

Cuando un usuario tiene su aplicación abierta en dos pestañas y actualiza un valor en la pestaña A, la pestaña B sigue mostrando el estado antiguo. Cada pestaña tiene su propio estado de React en memoria, aunque ambas comparten localStorage.

Sin coordinación, las pestañas no coinciden sobre el valor actual.

El evento storage se activa en otras pestañas

El navegador emite un evento storage en las otras pestañas del mismo origen cada vez que cambia localStorage. Es importante destacar que no se activa en la pestaña que realizó el cambio.

Esta es exactamente la señal que necesita la pestaña B para saber que la pestaña A ha actualizado algo.

Escucha con addEventListener

En un useEffect, llame a window.addEventListener('storage', handler) y devuelva una función de limpieza que lo elimine. Esto suscribe el componente a los cambios entre pestañas.

El efecto debe ejecutarse una vez al montarse, por lo que resulta adecuada una array de dependencias vacía o estable.

Propiedades de StorageEvent

El objeto de evento contiene key (qué clave cambió), oldValue y newValue (las cadenas anteriores y posteriores), y storageArea (el objeto de almacenamiento afectado).

Una clave null con valores null significa que el almacenamiento se vació por completo.

Filtrado de sus claves

El evento storage se activa para cada clave del origen, por lo que el controlador debe comprobar event.key === yourKey antes de reaccionar. Ignorar las claves no relacionadas evita renderizados innecesarios.

Gestione también el caso en que event.newValue sea null, lo que significa que se eliminó la clave.

Actualización del estado de React a partir del evento

Cuando llega un cambio relevante, analice event.newValue y llame al setter para actualizar el estado de React. Así, la segunda pestaña se sincroniza con el cambio realizado en otro lugar.

Combinado con un hook useLocalStorage, esto cierra el ciclo entre pestañas.

La alternativa BroadcastChannel

BroadcastChannel permite que las pestañas del mismo origen se envíen mensajes directamente mediante postMessage. Es más limpio que aprovechar los eventos de almacenamiento y funciona incluso sin escribir en localStorage.

Cree un canal por nombre, publique actualizaciones y escuche los eventos message.

useSyncExternalStore para el almacenamiento

React proporciona useSyncExternalStore para suscribirse a almacenes externos de forma segura en modo concurrente. Puede conectar su función de suscripción al evento storage y su instantánea a una lectura de localStorage.

Esto integra correctamente las actualizaciones del almacenamiento externo con el renderizado de React.

Caso de uso: cerrar sesión en todas las pestañas

Un caso clásico es cerrar sesión en todas partes: cuando una pestaña elimina el indicador de autenticación, el evento de almacenamiento de las demás pestañas lo detecta y las redirige a la pantalla de inicio de sesión.

Esto evita que una pestaña obsoleta siga mostrando contenido autenticado.

Sincronización del modo oscuro entre pestañas

El tema también es una excelente aplicación: al activar el modo oscuro en una pestaña, se escribe en localStorage, el evento de almacenamiento se activa en las demás y estas actualizan su estado del tema para coincidir al instante.

El usuario obtiene una apariencia coherente independientemente de la pestaña a la que cambie.

Cómo integrarlo todo

La sincronización entre pestañas consiste en escuchar el evento storage (o usar BroadcastChannel), filtrar las claves propias y actualizar el estado de React a partir del nuevo valor.

Para suscripciones robustas y seguras en modo concurrente, useSyncExternalStore es la opción moderna.

Comprobación rápida

Compruebe su comprensión de los eventos entre pestañas.

Resumen

Ha aprendido que el evento storage se activa en otras pestañas, cómo escucharlo, filtrarlo por clave y actualizar el estado, además de las alternativas BroadcastChannel y useSyncExternalStore.

También ha visto casos de uso reales, como cerrar sesión en todas partes y sincronizar el modo oscuro entre pestañas.

Preguntas frecuentes

¿La lección «Gestión de eventos de almacenamiento entre pestañas» es gratis?

Sí — el texto completo de «Gestión de eventos de almacenamiento entre pestañas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Gestión de eventos de almacenamiento entre pestañas»?

Reaccione a los cambios de localStorage en otras pestañas del navegador mediante el listener del evento storage. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Gestión de eventos de almacenamiento entre pestañas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Lectura y escritura de localStorage en React
  2. Sincronización del estado con localStorage
  3. Gestión de eventos de almacenamiento entre pestañas
  4. sessionStorage, IndexedDB y elección de la API adecuada
← Volver a React Academy