From c8c996d505b872e0f6f1203a661c27717aabd869 Mon Sep 17 00:00:00 2001 From: Karim Date: Sun, 15 Mar 2026 12:23:29 +0100 Subject: [PATCH] Refactor useInfiniteScroll: remove cancelled flag and simplify fetch handling --- hooks/use-infinite-scroll.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/hooks/use-infinite-scroll.ts b/hooks/use-infinite-scroll.ts index ea383d1..990de4e 100644 --- a/hooks/use-infinite-scroll.ts +++ b/hooks/use-infinite-scroll.ts @@ -30,7 +30,6 @@ export function useInfiniteScroll({ useEffect(() => { if (!inView || loading || !hasMore) return; - let cancelled = false; const currentPage = pageRef.current; const generation = ++fetchGenRef.current; @@ -38,7 +37,7 @@ export function useInfiniteScroll({ fetchMoreRef.current(currentPage) .then(({ data: newData, hasMore: newHasMore }) => { - if (cancelled || fetchGenRef.current !== generation) return; + if (fetchGenRef.current !== generation) return; if (newData.length > 0) { setData((prev) => [...prev, ...newData]); @@ -47,18 +46,14 @@ export function useInfiniteScroll({ setHasMore(newHasMore && newData.length > 0); }) .catch((error) => { - if (cancelled || fetchGenRef.current !== generation) return; + if (fetchGenRef.current !== generation) return; console.error("Error fetching more data:", error); setHasMore(false); }) .finally(() => { - if (cancelled || fetchGenRef.current !== generation) return; + if (fetchGenRef.current !== generation) return; setLoading(false); }); - - return () => { - cancelled = true; - }; }, [inView, loading, hasMore]); // Reset: replace all data, update hasMore, reset page counter.