Este es mi proyecto paralelo y me gustaría usar una función asíncrona que devuelva los datos de los usuarios. Así que declaré la función asíncrona fuera de useEffect e intenté establecer Estado en la función asíncrona.
cuando hago console.log res in y luego bloqueo, muestra el resultado que esperaba, pero cuando hago console.log fuera de la función async getData, no funcionará
¿Por qué setUsersData (setState) no funciona como esperaba?
const FeedPage = () => { const [usersData, setUsersData] = useState() const getData = useCallback(async () => { // eslint-disable-next-line promise/always-return await Goodlogging.inquireFeed().then((res) => { // when i console.log here it returns as i expected... console.log(res.data) setUsersData(res.data) }) }, []) useEffect(() => { // try to console.log data but it returns undefined ... console.log('usersData:', usersData) }, [usersData]) useEffect(() => { getData() }, [getData])La devolución de llamada useEffect no puede ser async , pero puede declarar una función asíncrona autoejecutable dentro.
Además, nota al margen, no use la sintaxis de promise con la sintaxis async/await .
useEffect(() => { (async () => { const res = await Goodlogging.inquireFeed() // when i console.log here it returns as i expected... console.log(res.data) setUsersData(res.data) })() }, [getData])