ローディングのチラつきを防ぐためのカスタムフックを作った!
5664 ワード
ローディングの時間がとても短いとき、チラつくことがありました。
そこで、
ローディングの表示時間の最小値を設定 し、チラつきを防ぐカスタムフック を作りました。
フック適応前 | フック適応後 |
---|---|
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);
Author And Source
この問題について(ローディングのチラつきを防ぐためのカスタムフックを作った!), 我々は、より多くの情報をここで見つけました https://zenn.dev/knaot0/articles/ec5dfd322c1c13著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol