reactjs - 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)
解决方案
不建议将效果声明为异步函数。但是您可以在效果中调用异步函数,如下所示:
useEffect(() => {
const genRandomKey = async () => {
console.log(await ecc.randomKey())
};
genRandomKey();
}, []);
更多信息:React Hooks 获取数据
推荐阅读
- python - Python War纸牌游戏运行正常但无限
- git - 为什么 git pack 协议只协商包文件协商期间要发送的提交?
- linux - 如何在后台运行 Webpack 服务命令?
- javascript - 标识符“i”已被声明为问题
- apache-spark - LoadIncrementalHFiles:分组 HFiles 时发生拆分
- json - 来自带有嵌套键的 Json 字符串的 Spark 数据帧
- xml - XPath 错误试图确定是否有至少一个不为空的子节点(具有字符串值)
- javascript - recoil 无法处理异步选择器的错误
- python - 解析站点时单击按钮
- javascript - 是什么导致此表单验证器类中未定义的无法读取属性“preventDefault”?