적재된 전단지를 막기 위해 특제 갈고리를 만들었습니다!

5357 단어 Reacttech
적재 시간이 매우 짧았을 때 전단지가 있었다.
그러므로
불러오는 디스플레이 시간의 최소값을 설정하고 깜빡임 방지 사용자 정의 연결을 만들었습니다.
바닥글
바닥글 적응 후


useLoadingWithBuffer.ts
import { useEffect, useState } from "react";

export const useLoadingWithBuffer = (
  isDefaultLoading: boolean,
  buffer: number = 500
) => {
  const [isLoading, setIsLoading] = useState(isDefaultLoading);
  const [isLocking, setIsLocking] = useState(false);

  useEffect(() => {
    // 「ローディング中」に変化したとき
    if (isDefaultLoading) {
      // 「ローディング中」に更新
      setIsLoading(isDefaultLoading);

      // 一定時間ローディング状態をロックする
      setIsLocking(true);
      setTimeout(() => setIsLocking(false), buffer);
    }

    // 「非ローディング中」に変化し、ロックされていないとき
    if (!isDefaultLoading && !isLocking) {
      // 「非ローディング中」に更新
      setIsLoading(isDefaultLoading);
    }
  }, [isDefaultLoading, isLocking]);

  return isLoading;
};
위의 연결고리에 마운트 표시를 추가할 수 있습니다.
const isLoading = useLoadingWithBuffer(isDefaultLoading);

좋은 웹페이지 즐겨찾기