在react组件中直接调用异步函数合法吗?

时间:2020-02-25 01:59:43

标签: reactjs react-hooks

我正在使用indexeddb存储数据,并使用useReducer()处理操作。

但是我不确定直接在react组件中调用异步函数是否正确。

谢谢

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>
  );
}

2 个答案:

答案 0 :(得分:1)

是的。这在react组件中是可能的,但是您不能在构造函数内完成,因为构造函数无法等待等待。

答案 1 :(得分:1)

在功能组件内部为onClick使用异步功能是完全可以的。