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

146
Vistas
El estado de reacción no se actualiza dentro de un bucle for

Estoy tratando de ejecutar un ciclo for en una aplicación React que se ejecutará a través de un rango de tokens definido por el usuario y realizará ofertas basadas en i del ciclo for. Suena muy simple, y lo es.

Sin embargo, tengo un problema en el que agregué un bloque para verificar si "isBidding" cambia a falso, lo que debería romper el bucle for. isBidding es una variable de estado local para el componente.

Parece que cuando comienza el ciclo for, isBidding siempre será verdadero, incluso cuando el estado cambia a falso mientras se ejecuta el ciclo. Por mi vida, no puedo averiguar cómo garantizar que la variable de estado global isBidding se actualice dentro de un bucle for.

 for (let i = startTokenId; i < endTokenId + 1; i++) { // Inside the loop we try to place bids on each token, waiting for user action setBidderScanningString(`Bidding on token id #${i} (${i} of ${endTokenId})...`); // Try to place the bid try { await createBuyOrder(i); } catch (e) { parseBidError(e); } // Check if loop is over, if so set bidding to false and end if (i.toString().toLowerCase() === endTokenId.toString().toLowerCase()) { setBidderScanningString('Bidding finished...'); setIsBidding(false); return; } // Check whether isBidding has been set to false if (!isBidding) { return; } }

Desde dentro del bucle he intentado llamar a una función, que devuelve el último estado de isBidding, sin embargo, esto siempre se evalúa como verdadero.

He intentado agregar isBidding en la segunda condición del ciclo for, sin embargo, siempre se evalúa como verdadero. También intenté agregar etiquetas y anidarlas dentro de un ciclo while (isBidding), sin embargo, siempre se evalúa como verdadero.

También intenté mover este código a un useEffect con una dependencia de isBidding, sin embargo, el bucle for siempre devuelve verdadero.

¿Hay algo deslumbrantemente obvio que me estoy perdiendo?

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

0

Parece que está utilizando useState setter setIsBidding y getter isBidding. JavaScript es de subproceso único y el bucle for se ejecuta de forma síncrona, lo que significa que todo el bucle terminará antes de que los efectos de llamar a setIsBidding se reflejen en isBidding.

Sugeriría declarar un valor localmente para usar dentro del ciclo for, y luego, una vez que finalice el ciclo, puede guardar el valor en setIsBidding si lo desea.

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