Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应JS地图卡图像_Javascript_Reactjs - Fatal编程技术网

Javascript 反应JS地图卡图像

Javascript 反应JS地图卡图像,javascript,reactjs,Javascript,Reactjs,当我通过自定义钩子从API获取imgs列表时,显示加载程序组件,然后显示映射列表。问题-卡片项目图像显示的时间不相同。 自定义挂钩: import { useState, useEffect } from "react"; export default function useFetch(typeTabByPopular, tabListType) { const [list, setList] = useState(""); const [p

当我通过自定义钩子从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事件,您可以使用它来实现此目的

因为您有一个图像列表,所以您知道每页上应该有多少图像。 使用
setLoadedImages
将计数器
loadedImages
置于每个图像的onLoad上,将其提升1


直到计数器等于页面上的图像数,然后渲染加载程序,当计数器与图像数匹配时,渲染图像。

图像正在加载,因此您需要等待它,否则将生成骨架