¿Por qué useEffect() no puede usar async-await?
const Home: React.FC = () => { useEffect(async () => { console.log(await ecc.randomKey()) }, []) return ( ...el error que me sale es
El argumento de tipo '() => Promise' no se puede asignar al parámetro de tipo 'EffectCallback'.
El tipo 'Promesa' no se puede asignar al tipo 'vacío | (() => vacío | indefinido)'.
El tipo 'Promise' no se puede asignar al tipo '() => void | indefinido'.
El tipo 'Promise' no proporciona ninguna coincidencia para la firma '(): void | indefinido'.ts(2345)
No se recomienda declarar el efecto como función asíncrona. Pero puede llamar a funciones asíncronas dentro del efecto de la siguiente manera:
useEffect(() => { const genRandomKey = async () => { console.log(await ecc.randomKey()) }; genRandomKey(); }, []);Más aquí: React Hooks Fetch Data
El uso de una función asíncrona en useEffect hace que la función de devolución de llamada devuelva una Promesa en lugar de una función de limpieza .
useEffect(() => { const foo = async () => { await performPromise() }; foo(); }, []);O con IIFE
useEffect(() => { (async () => { await performPromise() })() }, []);