Files
shoptime/com.twin.app.shoptime/src/hooks/useScrollTo.js
2024-04-22 20:33:09 +09:00

31 lines
764 B
JavaScript

import React, { useCallback, useEffect, useRef } from "react";
export default function useScrollTo() {
const scrollTo = useRef();
const scrollTop = useCallback(
({ y = 0, animate = true, duration = 300 } = {}) => {
if (scrollTo && scrollTo.current) {
scrollTo.current({ position: { y }, animate, duration });
}
},
[]
);
const scrollLeft = useCallback(({ x = 0, animate = false } = {}) => {
if (scrollTo && scrollTo.current) {
scrollTo.current({ position: { x }, animate });
}
}, []);
const getScrollTo = useCallback((cbScrollTo) => {
scrollTo.current = cbScrollTo;
}, []);
useEffect(() => {
scrollTop();
}, []);
return { getScrollTo, scrollLeft, scrollTop, scrollToRef: scrollTo };
}