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

210
Vistas
React Native: la actualización de datos del conjunto useState se retrasó

Entonces, en mi aplicación, se supone que mi botón configura mis datos y luego navega a la página siguiente. El problema aquí es que los datos no se actualizan lo suficientemente rápido (creo). La consola muestra nulo (que son los datos iniciales que configuré), luego navega a la página siguiente con los datos nulos. Si vuelvo a la página anterior y luego vuelvo a la página siguiente, llevará los datos anteriores que no se enviaron antes. Intenté setTimeout pero supongo que es una forma incorrecta de usar setTimeout.

 const [foto, setFoto] = useState(null); const sendQUtest = () => { setFoto('QUtest'); setTimeout(() => { console.log('assessmentTimeout: ' + foto); }, 5000); console.log('assessment: ' + foto); navigator.navigate('pembayaranAssessment', foto); }; const sendTOPtest = () => { setFoto('TOPtest'); console.log('assessment: ' + foto); navigator.navigate('pembayaranAssessment', foto); };

Me pregunto si de todos modos hay que esperar los datos. La solución que vi en otras preguntas es usar useEffect, pero en este lo necesito después de onPress.

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

0

usestate es asíncrono y realmente no puede hacer una función de espera para ello, hay dos enfoques, uno de ellos está usando useEffect gancho como el siguiente, puede tener múltiples useEffect en una función use useEffect para verificar cuándo cambia el valor y luego navegar

 const [foto, setFoto] = useState(null); useEffect(()=>{ //this will fire at the beginning and on foto changing value if(foto == null){ //will ignore first run }else{ navigator.navigate('pembayaranAssessment', foto); }},[foto]) const sendQUtest = () => { setFoto('QUtest'); setTimeout(() => { console.log('assessmentTimeout: ' + foto); }, 5000); console.log('assessment: ' + foto); //navigator.navigate('pembayaranAssessment', foto); }; const sendTOPtest = () => { setFoto('TOPtest'); console.log('assessment: ' + foto); // navigator.navigate('pembayaranAssessment', foto); };
about 4 years ago · Juan Pablo Isaza Denunciar

0

SÍ setstate tardará un tiempo en actualizarse , puede enviar datos directamente a su función de navegación

navigator.navigate('pembayaranAssessment', 'TOPtest');

about 4 years ago · Juan Pablo Isaza Denunciar

0

Prueba de esta manera

 const sendQUtest = () => { setFoto('QUtest'); setTimeout(() => { navigator.navigate('pembayaranAssessment', foto); // add here }, 200); }; const sendTOPtest = () => { setFoto('TOPtest'); setTimeout(() => { navigator.navigate('pembayaranAssessment', foto); // add here }, 200); };
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