[英]How to fetch large API data in react and send back request to server?
Let me explain what I want to achieve?让我解释一下我想要实现的目标?
const [ imageLinkData, setImageLinkData ] = useState([]);
const [ imageLink, setImageLink ] = useState([]);
const [ additionalImageLink, setAdditionalImageLink ] = useState([]);
useEffect(() => {
const checkLink = async () => {
if (imageLinkData.length > 0) {
checkMainImage(imageLinkData, (resultImg) => setImageLink(resultImg)); // test main image link
checkAdditionalImage(imageLinkData, (resultImg) => setAdditionalImageLink(resultImg)); // test additional image link
const response = await getSuggList();
}
}
checkLink();
}, [imageLinkData])
const checkMainImage = (linkArray, callback) => {
linkArray.map(element => {
const img = new Image();
img.src = element.imageLink;
img.onload = () => {
setImageLink(element.imageLink);
callback(element.imageLink);
};
img.onerror = () => {
callback('donot');
};
});
}
const checkAdditionalImage = (linkArray, callback) => {
linkArray.map(element => {
element.additionalImageLink.map(addImage => {
const img = new Image();
img.src = addImage;
img.onload = () => {
return callback(addImage);
};
img.onerror = () => {
return callback('donot');
};
})
});
}
useEffect(() => {
// if (imageLink.length > 0 || additionalImageLink.length > 0)
console.log(imageLink);
}, [imageLink])
checkMainImage(imageLinkData, (resultImg) => setImageLink(resultImg)); // test main image link
checkAdditionalImage(imageLinkData, (resultImg) => setAdditionalImageLink(resultImg)); // test additional image link
In this setImageLink(resultImg)
and setAdditionalImageLink(resultImg)
, you are setting only the last value that is available in the json data.在此
setImageLink(resultImg)
和setAdditionalImageLink(resultImg)
中,您仅设置 json 数据中可用的最后一个值。
Shouldn't it be pushing the value to the imageLink
and additionalImageLink
array?它不应该将值推送到
imageLink
和additionalImageLink
数组吗?
Like setImageLink([...imageLink, resultImg])
?像
setImageLink([...imageLink, resultImg])
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.