UNPKG

@wojtekmaj/react-hooks

Version:

A collection of React Hooks.

22 lines (21 loc) 830 B
import { useCallback, useRef, useState } from 'react'; import useEventListener from './useEventListener.js'; const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; /** * Returns current scroll left direction. * * @returns {Direction | null} Scroll left direction */ export default function useScrollLeftDirection() { const prevScrollLeft = useRef(); const [direction, setDirection] = useState(isBrowser ? 'still' : null); const onScroll = useCallback(() => { const { scrollX } = window; if (prevScrollLeft.current !== undefined) { setDirection(prevScrollLeft.current < scrollX ? 'right' : 'left'); } prevScrollLeft.current = scrollY; }, []); useEventListener(isBrowser ? document : null, 'scroll', onScroll); return direction; }