UNPKG

@resourge/react-fetch

Version:

[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

55 lines (52 loc) 1.49 kB
/** * react-fetch v1.41.3 * * Copyright (c) resourge. * * This source code is licensed under the MIT license found in the * LICENSE.md file in the root directory of this source tree. * * @license MIT */ import { useRef, useEffect } from 'react'; const getScrollPage = () => { let docScrollTop = 0; let docScrollLeft = 0; if (document.documentElement && document.documentElement !== null) { docScrollTop = document.documentElement.scrollTop; docScrollLeft = document.documentElement.scrollLeft; } return { top: window.pageYOffset || docScrollTop, left: window.pageXOffset || docScrollLeft }; }; const useOnScroll = scrollMethod => { const ref = useRef(window); const onScrollRef = useRef(scrollMethod); onScrollRef.current = scrollMethod; const onScroll = event => { onScrollRef.current({ left: event.currentTarget.scrollLeft, top: event.currentTarget.scrollTop }); }; useEffect(() => { const element = ref.current; if (element) { const onScroll = () => { onScrollRef.current(element instanceof Window ? getScrollPage() : { top: element.scrollTop, left: element.scrollLeft }); }; element.addEventListener('scroll', onScroll, true); return () => { element.removeEventListener('scroll', onScroll, true); }; } }, [ref.current]); return [ref, onScroll]; }; export { getScrollPage, useOnScroll }; //# sourceMappingURL=useOnScroll.js.map