reactjs - 一次使用多个 get 请求 useEffect (react)
问题描述
我有一个图像数据库,每个图像都包含一个 URL(图像)和唯一 ID。
我通过 id 抓取图像,如下所示: fetchData = 一个负责使用 api url 获取数据的函数
useEffect(() => {
fetchData("/images/1")
.then(res => res.data)
.then(data => {
setImage(data.data)
})
}, [])
但是,在我的一个组件中,我需要抓取 3 张不同的图像(id:1、4、10)。我显然可以通过 3 种不同的 useEffects 来做到这一点,但这似乎是错误的。
此外,我尝试抓取所有图像
useEffect(() => {
fetchData("/images/")
.then(res => res.data)
.then(data => {
setImages(data.data)
})
}, [])
然后这样做<img src ={images[1].url}
,但这似乎也不是最好的解决方案,因为我正在抓取所有图像(有很多图像)。
关于如何使这个尽可能干净的任何提示?
解决方案
如果我是你,我会创建一个只负责抓取和显示图像的自定义组件,并使用它 3 次。
function ImageComponent({ id }) {
const [image, setImage] = useState();
useEffect(() => {
// In case of id changed, reset component state
setImage(undefined);
fetchData(`/images/${id}`)
.then(res => res.data)
.then(data => {
setImage(data.data)
})
}, [id]);
return (
// Do something with the data here
)
}
推荐阅读
- c# - 图像未在 UWP 中从 Uri 转换为位图图像
- python - 如何从 html 源代码中具有相同属性集和相同层次结构的 2 个元素中抓取单个元素(使用 python 的美丽汤)
- ruby-on-rails - 如何为属于其他两个模型的模型编写范围并排除具有匹配外键的所有记录
- c# - .NET Core Web 应用程序到 linux 服务器获取用户
- android - Build.Gradle 中的库版本错误
- html - Remove a little gap between the nav and header
- java - org.openqa.selenium.WebDriverException: java.io.IOException: unexpected end of stream on Connection while invoking getCookies() with GeckoDriver
- javascript - How to restrict the current date based on the hours and minutes in javascript
- java - 如何使用实体管理器和标准在休眠中创建批量更新?
- apple-musickit - MusicKit API - Playlist Update, Delete, Song Remove