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

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

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 Report

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 Report

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 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!