create-rivas-react
Version:
Boilerplate for create react with atomic design
31 lines (24 loc) • 677 B
text/typescript
import { useEffect, useMemo, useState } from 'react';
const useScrollPosition = () => {
const [scrollPosition, setScrollPosition] = useState(
(typeof window !== 'undefined' && window.pageYOffset) || 0,
);
const onScroll = () => {
requestAnimationFrame(() => {
setScrollPosition(window.pageYOffset);
});
};
useEffect(() => {
window.addEventListener('scroll', onScroll.bind(this));
return () => {
window.removeEventListener('scroll', onScroll.bind(this));
};
}, []);
const detached = useMemo(() => {
return scrollPosition > 60;
}, [scrollPosition]);
return {
detached,
};
};
export default useScrollPosition;