scroll top issue fixed

This commit is contained in:
akash 2025-12-17 19:19:19 +05:30
parent f0d1cf08ac
commit ec0477bfba

View File

@ -1,6 +1,6 @@
"use client"; "use client";
import { useState, useEffect, useRef } from "react"; import { useState, useEffect, useRef, useMemo } from "react";
import Image from "next/image"; import Image from "next/image";
import Link from "next/link"; import Link from "next/link";
import { PortfolioData } from "@/utils/constant.utils"; import { PortfolioData } from "@/utils/constant.utils";
@ -21,20 +21,30 @@ const CaseStudies = () => {
const [visibleCount, setVisibleCount] = useState(6); const [visibleCount, setVisibleCount] = useState(6);
const observerRef = useRef(null); const observerRef = useRef(null);
const filteredItems = // Memoize filtered items to prevent unnecessary re-computations
activeTab === "*" const filteredItems = useMemo(() => {
return activeTab === "*"
? PortfolioData ? PortfolioData
: PortfolioData.filter((item) => item.category === activeTab); : PortfolioData.filter((item) => item.category === activeTab);
}, [activeTab]);
// Reset visible count when tab changes
useEffect(() => { useEffect(() => {
setVisibleCount(6); setVisibleCount(6);
}, [activeTab]); }, [activeTab]);
// Infinite Scroll Observer
useEffect(() => { useEffect(() => {
const observer = new IntersectionObserver( const observer = new IntersectionObserver(
(entries) => { (entries) => {
if (entries[0].isIntersecting) { if (entries[0].isIntersecting) {
setVisibleCount((prev) => prev + 6); setVisibleCount((prev) => {
// Only increase if we haven't shown all items yet
if (prev < filteredItems.length) {
return prev + 6;
}
return prev;
});
} }
}, },
{ threshold: 0.1 } { threshold: 0.1 }
@ -49,7 +59,7 @@ const CaseStudies = () => {
observer.unobserve(observerRef.current); observer.unobserve(observerRef.current);
} }
}; };
}, [filteredItems]); }, [filteredItems]); // Dependency ensures observer recreates only when list changes
return ( return (
<> <>