Reactjs react中useffect内的Promise.all()返回未定义项的数组
它在获取之后工作,然后在Promise.all()返回undefined。Promise.allsolited()也会发生同样的情况 这可能是一个简单的问题,因为我是react新手,但我已经尝试了我能想到的一切,它仍然返回未定义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
请让我知道我的错误是什么,以及如何修复它们。谢谢大家!
.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])