import { useEffect, useRef } from 'react';
import { fromEvent } from 'rxjs';
import { throttleTime, map } from 'rxjs/operators';
const useScrollAnimation = () => {
const scrollRef = useRef(null);
useEffect(() => {
const scrollElement = scrollRef.current;
if (!scrollElement) return;
const scroll$ = fromEvent(scrollElement, 'scroll').pipe(
throttleTime(100),
map(() => scrollElement.scrollTop)
);
const subscription = scroll$.subscribe((scrollPosition) => {
console.log('Scroll position:', scrollPosition);
});
return () => {
subscription.unsubscribe();
};
}, []);
return scrollRef;
};
export default useScrollAnimation;
import React from 'react';
import useScrollAnimation from './useScrollAnimation';
const ScrollAnimationComponent = () => {
const scrollRef = useScrollAnimation();
return (
<div
ref={scrollRef}
style={{
height: '500px',
overflowY: 'scroll',
}}
>
{}
</div>
);
};
export default ScrollAnimationComponent;