开发者问题收集

React JS 地图卡片图像

2020-11-27
126

当我通过自定义钩子显示加载器组件,然后是地图列表从 API 获取图片列表时。问题 - 卡片项目图片显示时间不同。 在此处输入图片描述

自定义钩子:

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 };
}
1个回答

所有图像元素都有一个 onLoad 事件,您可以使用它来实现此目标。

由于您有一个图像列表,因此您知道每个页面上应该有多少张图像。 放置一个 loadedImages 计数器,并在每个图像的 onLoad 上使用 setLoadedImages 将其加 1。

直到计数器等于页面上的图像数量,才渲染加载器,当它与图像数量匹配时,渲染图像。

Ran Marciano
2020-11-27