Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

202
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda