es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

React Native – La actualización de datos del useState se realiza tarde.

En mi aplicación, se supone que mi botón debe establecer los datos y luego navegar a la siguiente página. El problema aquí es que los datos no se actualizan lo suficientemente rápido (creo). La consola muestra null (que es el dato inicial que establecí), luego navega a la siguiente página llevando los datos nulos. Si vuelvo a la página anterior y luego voy a la siguiente página de nuevo, 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 hay alguna manera de esperar por los datos. La solución que vi en otras preguntas es usar useEffect, pero en esta necesito después del onPress.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puedes usar el gancho useEffect para esperar a que los datos se actualicen antes de navegar a la siguiente página. El gancho useEffect se ejecutará después de que se actualicen los datos, por lo que puedes usarlo para verificar si los datos se actualizaron y luego navegar a la siguiente página.

    const [foto, setFoto] = useState(null);
    
    useEffect(() => {
      if (foto) {
        navigator.navigate('pembayaranAssessment', foto);
      }
    }, [foto]);
    
    const sendQUtest = () => {
      setFoto('QUtest');
    };
    
    const sendTOPtest = () => {
      setFoto('TOPtest');
    };
    

Comments are closed.