reactjs - 直接在反应组件中调用异步函数是否合法?
问题描述
我使用 indexeddb 来存储数据,并使用 useReducer() 来处理操作。
但我不确定直接在反应组件中调用异步函数是否正确。
谢谢
function Component({ dispatch }) {
function pushToast() {
const id = uniqid();
dispatch({ type: "PUSH_TOAST", payload: { id, content: "success" } });
setTimeout(() => dispatch({ type: "CLEAR_TOAST", payload: { id } }) , 3000);
}
async function getDocs() {
try {
const result = await idb.getDocs();
dispatch({ type: "REQUEST_SUCCESS", payload: result });
pushToast();
} catch (error) {
dispatch({ type: "REQUEST_FAIL" });
}
}
return (
<div>
<button onClick={getDocs}></button>
</div>
);
}
解决方案
是的。这在反应组件中是可能的,但你不能在构造函数中这样做,因为构造函数不能等待等待。
推荐阅读
- javascript - Axios post request not sent to external url: TypeError: ns.GetCommandSrc is not a function
- java - Java.IO.io 异常处理
- java - Cucumber:在执行第一个脚本“警告:在类路径中找不到功能:/Runner”时显示
- javascript - 在 nodejs 中将货币符号写入文件的问题
- azure-sql-database - 将 ssis 2008 c# 架构升级到 2016 for azure
- vue.js - 如何在测试模式而不是生产模式下运行赛普拉斯?
- javascript - 在另一个屏幕中更改状态也会更改 DrawerNavigation 的状态
- azure-devops - Azure DevOps - 迭代更改
- sql - 在使用分区创建新列时,我得到了?在新列数据中
- excel - 以月为单位计算日期之间的差异,并根据定义的截止日期 MS EXCEL