¿Cómo puedo llamar a una función de limpieza asíncrona en useEffect?
useEffect(() => { return () => Voice.destroy().then(Voice.removeAllListeners); }, []); EffectCallback espera void , no Promise<void>
Puede envolver el cuerpo entre llaves, porque actualmente devuelve la Promise (esto es lo que sucede cuando omite las llaves, un retorno de una línea), lo que hace que su función de limpieza devuelva una Promise<void> . Con llaves, será solo el cuerpo de la función y no una declaración de retorno implícita:
useEffect(() => { return () => { Voice.destroy().then(Voice.removeAllListeners) }; }, []);