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

87
Vistas
React Native - UseEffect se actualiza constantemente

Estoy usando useEffect para obtener el total de piezas del rompecabezas de mi almacenamiento asíncrono para que se muestren en la página de inicio. Utilizo el almacenamiento asíncrono para obtener la cantidad de rompecabezas almacenados en el almacenamiento y luego, para cada rompecabezas, agrego la cantidad total de piezas del rompecabezas. Hago esto dentro de useEffect ya que la cantidad total de piezas de rompecabezas puede cambiar dependiendo de si el usuario agrega más rompecabezas a su colección. Sin embargo, cuando uso useEffect, mi cantidad total de piezas de rompecabezas se actualiza constantemente y nunca se detiene.

Código:

 let [totalPieces, setTotalPieces] = useState(0); const [numJigsaw, setNumJigsaw] = useState([]); const getNumOfJigsaw = async () => { try { setNumJigsaw(await AsyncStorage.getAllKeys()); } catch (e) {} return numJigsaw; }; const getAllJigsaw = async () => { let jigsaws = await getNumOfJigsaw(); for (let z = 0; z < jigsaws.length; z++) { let currentJigsaw = JSON.parse(await AsyncStorage.getItem(jigsaws[z])); setTotalPieces(totalPieces+ parseFloat(currentJigsaw.pieces)); } }; useEffect(() => { getAllJigsaw(); }, [totalPieces]);

Creo que el problema se debe a que totalPieces depende. Aunque no estoy del todo seguro.

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

0

Sí, configuró el efecto para que se ejecute cuando cambie totalPieces (a través de la dependencia).

El efecto (cuando se resuelven las cosas asincrónicas) establece totalPieces , por lo que el efecto se ejecuta nuevamente debido a esa dependencia, etc., etc.

Parece que estás buscando algo como

 const [totalPieces, setTotalPieces] = useState(0); const [jigsawKeys, setJigsawKeys] = useState([]); useEffect(() => { (async () => { const jigsaws = await AsyncStorage.getAllKeys(); let total = 0; for (let z = 0; z < jigsaws.length; z++) { let currentJigsaw = JSON.parse(await AsyncStorage.getItem(jigsaws[z])); total += parseFloat(currentJigsaw.pieces); } setJigsawKeys(jigsaws); setTotalPieces(total); })(); }, [totalPieces]);

en general (cambié el nombre de numJigsaw a jigsawKeys para que tenga más sentido).

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