当前位置: 首页 > 知识库问答 >
问题:

在useEffect钩子的if条件中调用异步函数

咸高谊
2023-03-14

如何在useEffect钩子的if块中调用redux操作:

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

我有两个选择框。如果此人在name选择框中键入,我将name的选定id存储nameid状态中。如果用户选择了一个组,我将它存储在selectedgroup中,所以只有在两个条件都匹配的情况下,我才需要调用APIendpoint来获取subpeoples

如果我注释这段代码,就没有错误。如何使代码片段工作?

共有1个答案

张森
2023-03-14

您可以将异步逻辑移动到一个单独的函数中,并在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]);

 类似资料: