首页 > 解决方案 > React TypeScript 16.8 如何使 useEffect() 异步

问题描述

为什么不能useEffect()使用异步等待?

const Home: React.FC = () => {
    
    useEffect(async () => {
        console.log(await ecc.randomKey())
    }, [])
    
    return (
    ...

我得到的错误是

'() => Promise' 类型的参数不可分配给'EffectCallback' 类型的参数。

类型“Promise”不可分配给类型“void |” (() => void | 未定义)'。

类型 'Promise' 不可分配给类型 '() => void | 不明确的'。

类型 'Promise' 不匹配签名 '(): void | 未定义'.ts(2345)

标签: reactjstypescriptasync-awaitreact-hooks

解决方案


不建议将效果声明为异步函数。但是您可以在效果中调用异步函数,如下所示:

useEffect(() => {
  const genRandomKey = async () => {
    console.log(await ecc.randomKey())
  };

  genRandomKey();
}, []);

更多信息:React Hooks 获取数据


推荐阅读