Reactjs react中useffect内的Promise.all()返回未定义项的数组

Reactjs react中useffect内的Promise.all()返回未定义项的数组,reactjs,undefined,use-effect,promise.all,Reactjs,Undefined,Use Effect,Promise.all,它在获取之后工作,然后在Promise.all()返回undefined。Promise.allsolited()也会发生同样的情况 这可能是一个简单的问题,因为我是react新手,但我已经尝试了我能想到的一切,它仍然返回未定义 请让我知道我的错误是什么,以及如何修复它们。谢谢大家! .console.log返回未定义的,并承诺解析到承诺链中最后一个返回的值 在这里: 您正在获取填充的数据,console.log对其进行归档,然后返回undefined,因此那里的承诺将解析为undefined

它在获取之后工作,然后在Promise.all()返回undefined。Promise.allsolited()也会发生同样的情况

这可能是一个简单的问题,因为我是react新手,但我已经尝试了我能想到的一切,它仍然返回未定义


请让我知道我的错误是什么,以及如何修复它们。谢谢大家!

.console.log
返回
未定义的
,并承诺解析到承诺链中最后一个
返回的值

在这里:

您正在获取填充的数据,
console.log
对其进行归档,然后返回
undefined
,因此那里的承诺将解析为
undefined

你也没有在任何地方使用这个承诺。您应该从
.map
回调返回它

你需要:

useEffect(() => {
    const drinksPromises = id.map(obj =>
        fetch(`https://www.thecocktaildb.com/api/json/v1/1/lookup.php?i=${obj.idDrink}`)
            .then(res => res.json())
    );
    Promise.all(drinksPromises).then(data => { setDrinkCard(data) })
}, [id])

我使用
.then(data=>console.log(data))
作为我的一个尝试,使其工作。谢谢你,我不会再那样做了。代码仍然返回未定义,我使用Promise,因为我需要一个fetches数组来映射()并输出一些数据。您在我的回答中尝试了代码吗?您需要删除
控制台.log
并从
.map
回调返回承诺。您说得对!我必须兑现诺言,就是这样!谢谢:)
.then(data => console.log(data)) //Returns what I want
useEffect(() => {
    const drinksPromises = id.map(obj =>
        fetch(`https://www.thecocktaildb.com/api/json/v1/1/lookup.php?i=${obj.idDrink}`)
            .then(res => res.json())
    );
    Promise.all(drinksPromises).then(data => { setDrinkCard(data) })
}, [id])