javascript - React JS 地图卡片图像
问题描述
当我通过自定义钩子显示加载器组件从 API 获取 imgs 列表时,然后映射列表。问题 - 卡片项目图像显示的时间不同。 在此处输入图像描述
自定义钩子:
import { useState, useEffect } from "react";
export default function useFetch(typeTabByPopular, tabListType) {
const [list, setList] = useState("");
const [page, setPage] = useState("1");
const [loading, setLoading] = useState(true);
useEffect(() => {
setLoading(true);
fetch(
`https://api.themoviedb.org/3/trending/${tabListType}/
${typeTabByPopular}?api_key=${process.env.REACT_APP_API_KEY}&&page=${page}`,
)
.then((response) => response.json())
.then((data) => {
setList(data);
setLoading(false);
});
}, [tabListType, typeTabByPopular, page]);
return { list, setPage, loading };
}
解决方案
所有图像元素都有一个 onLoad 事件,您可以使用它来实现这一目标。
既然你有一张图片列表,那么你就知道每页应该有多少张图片。loadedImages
在每个图像的 onLoad 上放置一个计数器,setLoadedImages
用于将其提高 1。
直到计数器等于页面上的图像数量时才会渲染加载器,并且当它与图像数量匹配时才会渲染图像。
推荐阅读
- api - 如何在 Kotlin 的 forEach 循环中使用协程?
- javascript - 一次通话向所有订阅者发送网络推送通知
- c# - 使用 Vue JS 和 .Net Core Web API 之类的堆栈 - 我在哪里实现身份验证 (Azure AD)?
- arrays - 从 JSON 响应中的逗号分隔字符串中获取数据,并根据 IONIC 3 中的值禁用或启用按钮
- python-3.x - 如何使用菜单中没有“文件->退出”的pywinauto关闭窗口?
- javascript - 如何为 Webpack 4 中的每个输出导出 contenthash 值?
- clang - Xcode 11 ld 错误“您的二进制文件不是 /usr/lib/libcrypto.dylib 的允许客户端”
- javascript - 匹配一半在标签内一半在外面的字符串
- javascript - *ngFor 在获取新数据之前正在更新
- dialogflow-es - 如何在对话流中集成 Facebook Messenger 和默认响应