reactjs - 如何使用 Async / Await 和 React 钩子?
问题描述
我正在学习 React 并遵循视频教程。讲师使用了类组件,而我正在使用功能组件来复习钩子概念。
我想将此代码转换为功能代码:
return(
<div className={classes.editorContainer}>
<ReactQuill
value={this.state.text}
onChange={this.updateBody}>
</ReactQuill>
</div>
);
}
updateBody = async (val) => {
await this.setState({ text: val });
this.update();
};
我试图这样做,但异步似乎没有按我的预期工作。等待不适用于setText
.
const [text, setText] = useState('')
const updateBody = async(val) => {
await setText(val)
update()
}
解决方案
首先,setText 函数不会返回您可以等待并确保数据已设置的承诺。
如果要设置状态并确保update
在设置值后调用函数,则需要使用另一个名为useEffect
. 通过使用useEffect
,您基本上可以在更新时获得最新状态。
如果您不关心状态是否已设置,您可以将异步函数转换为以下内容,
const updateBody = (val) => {
setTitle(val)
update()
}
推荐阅读
- android - Room Android 错误:数据库的连接池
- encryption - 使用 AES-128/PKCS-1#rsaes-kem-kdf2-kw-aes128 解密 EncryptedKey 会话密钥
- android - 蓝牙耳塞触摸手势应触发应用程序中的 onClick 侦听器
- contact-form-7 - 联系表格 7 根据下拉选择重定向到表单提交时的不同 URL
- node.js - 如何在反应中从api获取数据?
- r - 基于单元格值的灵活表脚注
- javascript - 添加新帖子时动态路由不起作用
- azure - Azure B2C 在统一注册/登录流程中首先显示注册页面
- python - TypeError:返回类型必须是字符串、字典、元组、响应实例或 WSGI 可调用的,但它是协程
- python - 使用自定义类作为视图类时出现 RecycleView 错误