首页 > 解决方案 > 直接在反应组件中调用异步函数是否合法?

问题描述

我使用 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>
  );
}

标签: reactjsreact-hooks

解决方案


是的。这在反应组件中是可能的,但你不能在构造函数中这样做,因为构造函数不能等待等待。


推荐阅读