Skip to content

Commit 8e34c0a

Browse files
committed
Limit re-renders
1 parent e87ab9b commit 8e34c0a

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

src/Carousel.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ type CarouselContext = {
7272
handleScrollToNext: () => void;
7373
handleScrollToPrev: () => void;
7474
scrollIntoView: ScrollIntoView;
75-
remainingForwards?: number;
76-
remainingBackwards?: number;
75+
remainingForwards: React.RefObject<number>;
76+
remainingBackwards: React.RefObject<number>;
7777
setRemainingForwards: (remainingForwards: number) => void;
7878
setRemainingBackwards: (remainingBackwards: number) => void;
7979
scrollStateRef?: MaybeUndefined<RefObject<ScrollState>>;
@@ -91,6 +91,8 @@ const CarouselContext = createContext<CarouselContext>({
9191
setScrollsForwards: () => {},
9292
scrollsBackwards: false,
9393
scrollsForwards: false,
94+
remainingForwards: { current: 0 },
95+
remainingBackwards: { current: 0 },
9496
setRemainingForwards: () => {},
9597
setRemainingBackwards: () => {},
9698
setScrollStateRef: () => {},
@@ -147,8 +149,10 @@ const CarouselRoot = forwardRef<HTMLDivElement, CarouselRootProps>(
147149
});
148150
const [scrollsBackwards, setScrollsBackwards] = useState(false);
149151
const [scrollsForwards, setScrollsForwards] = useState(false);
150-
const [remainingForwards, setRemainingForwards] = useState(0);
151-
const [remainingBackwards, setRemainingBackwards] = useState(0);
152+
const remainingForwards = useRef(0);
153+
const remainingBackwards = useRef(0);
154+
const setRemainingForwards = useCallback((value: number) => { remainingForwards.current = value; }, []);
155+
const setRemainingBackwards = useCallback((value: number) => { remainingBackwards.current = value; }, []);
152156
const [scrollStateRef, setScrollStateRef] =
153157
useState<MaybeUndefined<RefObject<ScrollState>>>(undefined);
154158
const rootRef = useRef<HTMLDivElement>(null);
@@ -494,8 +498,6 @@ const CarouselRoot = forwardRef<HTMLDivElement, CarouselRootProps>(
494498
ref,
495499
scrollsBackwards,
496500
scrollsForwards,
497-
remainingForwards,
498-
remainingBackwards,
499501
scrollStateRef,
500502
handleScrollToNext,
501503
handleScrollToPrev,

0 commit comments

Comments
 (0)