mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-01 11:56:25 +02:00
refactor: use functional state updates in hero carousel callbacks
Switched goTo, goToPrev, and goToNext from depending on activeIndex to using functional setState updates. Removed activeIndex from the autoplay effect dependency array since the timer callback already uses a functional update. Callbacks are now stable references. Fixes #951
This commit is contained in:
parent
dfe3e7b43f
commit
298e658bab
1 changed files with 16 additions and 11 deletions
|
|
@ -145,21 +145,26 @@ function HeroCarousel() {
|
|||
const [isGifExpanded, setIsGifExpanded] = useState(false);
|
||||
const directionRef = useRef<"forward" | "backward">("forward");
|
||||
|
||||
const goTo = useCallback(
|
||||
(newIndex: number) => {
|
||||
directionRef.current = newIndex >= activeIndex ? "forward" : "backward";
|
||||
setActiveIndex(newIndex);
|
||||
},
|
||||
[activeIndex]
|
||||
);
|
||||
const goTo = useCallback((newIndex: number) => {
|
||||
setActiveIndex((prev) => {
|
||||
directionRef.current = newIndex >= prev ? "forward" : "backward";
|
||||
return newIndex;
|
||||
});
|
||||
}, []);
|
||||
|
||||
const goToPrev = useCallback(() => {
|
||||
goTo(activeIndex <= 0 ? carouselItems.length - 1 : activeIndex - 1);
|
||||
}, [activeIndex, goTo]);
|
||||
setActiveIndex((prev) => {
|
||||
directionRef.current = "backward";
|
||||
return prev <= 0 ? carouselItems.length - 1 : prev - 1;
|
||||
});
|
||||
}, []);
|
||||
|
||||
const goToNext = useCallback(() => {
|
||||
goTo(activeIndex >= carouselItems.length - 1 ? 0 : activeIndex + 1);
|
||||
}, [activeIndex, goTo]);
|
||||
setActiveIndex((prev) => {
|
||||
directionRef.current = "forward";
|
||||
return prev >= carouselItems.length - 1 ? 0 : prev + 1;
|
||||
});
|
||||
}, []);
|
||||
|
||||
const item = carouselItems[activeIndex];
|
||||
const isForward = directionRef.current === "forward";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue