Estoy escuchando el evento de enfoque en la navegación en React native y usando @react-navigation^5.xx en componentDidMount . Si solo se escribe esta acción, entonces funciona bien y ejecuta el código dentro de ella.
Pero en mi caso, estoy obteniendo datos de la API (también lo intenté burlándome de la espera) y uso la espera antes de agregar el oyente de enfoque. No es ser escuchado por primera vez. Pero cuando voy a otra página y vuelvo, comienza a funcionar/ejecutarse.
Aquí está mi fragmento de código.
async componentDidMount() { await new Promise(resolve => setTimeout(resolve, 3000)); // 3 sec navigation.addListener('focus', async (data) => { console.log('This block not works for first time when I come on page.') }) }Editar: incluso si elimino la espera y pongo todo el bloque en tiempo de espera, también deja de ejecutar la devolución de llamada de enfoque.
No creo que puedas usar async en el ciclo de vida, prueba esto en su lugar:
componentDidMount() { const getData = async (params) => { await new Promise(resolve => setTimeout(resolve, 3000)); // 3 sec navigation.addListener('focus', async (data) => { console.log('This block not works for first time when I come on page.') }) } getData() }