【发布时间】:2020-12-14 23:39:53
【问题描述】:
我有一个返回 5000 张图像的 API。我想在 React 中使用 Fetch 从每个相册中获取第一张带有偶数 ID 的图片。
问题是无法弄清楚如何过滤数据以获取具有偶数 ID 和偶数 ID 专辑的第一张图片的数据。
import React, {useState, useEffect} from 'react';
// Import Materials from Material-ui
import {Grid} from '@material-ui/core';
const Album = () => {
const [images, setImages] = useState([]);
const [imagesCount, setImagesCount] = useState(10);
const api = 'https://jsonplaceholder.typicode.com/photos';
useEffect(() => {
fetch(api)
.then(res => res.json())
.then(data => {
const filterData = data.filter(x => x.albumId % 2 === 0);
for(const url of filterData) {
if(url.albumId % 2 === 0) {
// How to get only the first even ablumID url of each even albumID?
}
}
setImages(filterData);
console.log(filterData);
})
.catch(err => console.log(err))
}, []);
return (
<div>
<Grid container spacing={3} alignItems="center">
{images.map((album) => (
<Grid item key={album.id} xs={12} sm={6} md={4}>
<img className="albumImg" src={album.url} alt={album.title} />
</Grid>
))}
</Grid>
</div>
)
}
export default Album;
【问题讨论】:
-
那么您遇到的问题是什么?顺便说一句,
Array.prototype.filter返回一个新数组并且不会改变旧数组,因此如果您想在过滤后的数组上调用setImages,那么您应该将该新数组存储在一个变量中并使用它来设置您的state. -
data.filter(x => x.albumId % 2 === 0) 并没有真正过滤任何东西。
-
查看我更新的评论。
-
data.filter(x => x.albumId % 2 === 0);您是在尝试过滤偶数的 id,还是在尝试获取 id===0?
-
我正在尝试过滤具有偶数的 ID。
标签: javascript reactjs api fetch react-functional-component