在useEffect挂钩的if条件内调用异步函数

时间:2019-11-22 08:39:05

标签: javascript reactjs

如何在useEffect钩子的if块内调用redux动作:

useEffect(async () => {
    if (nameId && selectedGroup === 'AGM') {
        const subPeople = await getSubPeople(nameId);
    }
}, [nameId, selectedGroup]);

我有两个选择框。如果人员在name选择框中键入内容,则我将name的选定ID存储在nameId状态下。如果用户选择了一个组,则将其存储在selectedGroup中,因此只有在两个条件都匹配的情况下,我才需要调用API端点来获取subPeople

如果我注释此代码,则没有错误。如何使代码段正常工作。

我们将不胜感激:)

1 个答案:

答案 0 :(得分:4)

您可以将异步逻辑移到一个单独的函数中,并在useEffect中进行调用,因为useEffect的回调本身不能是异步的:

useEffect(() => {
  const getPeople = async () => {
    if (nameId && selectedGroup === 'AGM') {
      const subPeople = await getSubPeople(nameId);
      return subPeople; // Or set the state, etc.
    }
  }
  getPeople(); 
}, [nameId, selectedGroup]);