Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

172
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!