我想问一下如何通过useEffect()
钩子获取数据。
我想要的流程如下。
首先,我想获取“cards”状态,用数据填充cards,然后通过cardsPromises填充数据。
但是我的代码不能得到cards和wordAll,空值出来了。
我想是因为牌还空着,但我不知道如何按顺序操作。
const [wordAll, setWordAll] = useState([]);
const [cards, setCards] = useState([]);
useEffect(() => {
axios
.get("http/api/words/", {
headers: {
Authorization: cookies.token,
},
})
.then((response) => {
setCards(response.data);
})
.catch((error) => {
console.log(error);
});
const cardsPromises = cards.map((contents) =>
axios.get(
`http/api/words/detail_list/?contents=${contents.contents}`,
{
headers: {
Authorization: cookies.token,
},
}
)
);
console.log("cards", cards);
Promise.all(cardsPromises)
.then((response) => {
console.log("resp", response.data);
setWordAll(response.data);
})
.catch((error) => {
console.log("err==>", error);
});
}, []);
字符串
2条答案
按热度按时间nkoocmlb1#
将第二个axios调用 Package 在一个函数中,并在第一个axios调用返回后调用它。
字符串
现在的依赖链更清晰了。
m2xkgtsf2#
你是对的,当获取数据时,
cards
数组在useEffect
回调中仍然是空的。我建议转换为async
/await
并等待第一次获取解决,并使用cards
的 that 值获取其余数据。字符串