@i-novus/ui-core
Version:
Базовые UI компоненты
17 lines (16 loc) • 655 B
JavaScript
import { useEffect, useRef } from 'react';
export const useScroll = (targetRef, scrollHandler, value) => {
const valueRef = useRef(value);
valueRef.current = value;
useEffect(() => {
if (!targetRef.current || !scrollHandler) {
return;
}
const listContainerElement = targetRef.current;
listContainerElement.addEventListener('scroll', event => scrollHandler(event, valueRef.current));
// eslint-disable-next-line consistent-return
return () => {
listContainerElement.removeEventListener('scroll', scrollHandler);
};
}, [targetRef, scrollHandler, valueRef]);
};