【发布时间】:2020-07-30 02:43:14
【问题描述】:
我正在从服务器获取图像。为什么useEffect里面的console.log(images)是一个空数组,而useEffect外面却是返回数据。
const ImageGrid = () => {
const [images, setImages] = useState([]);
useEffect(() => {
fetch(`https://api.unsplash.com/photos/?client_id=${key}&per_page=28`)
.then(res => {
return res.json();
})
.then(images => {
setImages(images);
});
console.log(images);
}, []);
console.log(images);
return (
<div className="content">
<section className="grid">
{images.map(image => (
<div>
<img src={image.urls.small} alt={image.user.username} />
</div>
))}
</section>
</div>
);
};
【问题讨论】:
-
useEffect的正文没有按照您认为的顺序执行。它会调用 fetch 然后立即调用你的 console.log。您应该将您的console.log(images)移动到数据返回后调用的最后一个回调中 -
把你的console.log放在最后一个“then”语句中。
标签: reactjs