Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

171
Vistas
¿Cómo vuelvo a ejecutar useEffect hook si se ha cambiado el valor de almacenamiento local?

Estoy tratando de volver a ejecutar el gancho useEffect en función de si se ha agregado algún elemento nuevo al almacenamiento local.

Mi useEffect se ve así:

 useEffect(() => { //getting all localstorage items and setting to a variable const localStorageItems = { ...localStorage } // filtering out the localstorage items for keys that only starts with "HTTP" & pushing it to the state called "testData" using setTestData useState hook. const filteredByKey = Object.fromEntries( Object.entries(localStorageItems).filter(([key, value]) => { if (key.startsWith("http")) { testArr2.push({ urls: [key, value] }) // setTestData({ urls: [key, value] }) setTestData((prev) => [...prev, { key, value }]) } }) ) }, [])

Mi problema es cuando presiono un botón (agregando nuevos datos), este useEffect idealmente debería volver a ejecutarse, configurando los últimos datos en el estado "testData".

El problema :

  • No puedo pasar window.localstorage a la lista de dependencias de matriz de useEffect, ya que es una variable externa que creo y reacciono no lo permite.

Lo que he probado:

  • Miré esta respuesta en SO, pero mi situación es un poco compleja ya que primero estoy cargando todos los elementos en una variable (no conozco ninguna alternativa mejor)
  • He intentado poner el valor del estado en la lista de dependencias, pero no funciona y va a un bucle infinito.

Por favor ayuda. Gracias por leer hasta aquí.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Puedo darle una solución para este caso de uso, crear un contexto de reacción que se sincronice con localStorage . puede usar el contexto como una dependencia useEffect . sincronizar significa tomar el valor de localStorage al inicio y actualizar el contexto junto con localStorage desde su aplicación.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Defina un estado que contenga el valor de almacenamiento local y páselo como un parámetro useEffect.

 const [localStorageData, setLocalStorageData] = useState([]); useEffect(() => { // Your codes }, [localStorageData])
about 4 years ago · Juan Pablo Isaza Denunciar

0

puede usar el detector de eventos 'almacenamiento'

 window.addEventListener('storage', function(e) { if (e.newValue) { console.log('new data is saved ...') // ...... your code } })
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda