UNPKG

jobiqo-cl

Version:

[![CircleCI](https://circleci.com/gh/jobiqo/jobiqo-cl.svg?style=svg&circle-token=5a24efa5b8bbc4879276123e77d0d3f35ca7144c)](https://circleci.com/gh/jobiqo/jobiqo-cl)

38 lines (35 loc) 1.19 kB
import { useState, useEffect } from 'react'; const isBrowser = typeof window !== `undefined`; function getScrollPosition() { return isBrowser ? { x: window.pageXOffset, y: window.pageYOffset } : { x: 0, y: 0 }; } function useScrollPosition() { const [position, setScrollPosition] = useState(getScrollPosition()); useEffect(() => { let requestRunning = null; function handleScroll() { if (isBrowser && requestRunning === null) { requestRunning = window.requestAnimationFrame(() => { setScrollPosition(getScrollPosition()); requestRunning = null; }); } } if (isBrowser) { window.addEventListener('scroll', handleScroll); return () => window.removeEventListener('scroll', handleScroll); } }, []); return position; } function useScrollXPosition() { const { x } = useScrollPosition(); return x; } function useScrollYPosition() { const { y } = useScrollPosition(); return y; } export { useScrollPosition, useScrollXPosition, useScrollYPosition };