Files
wehub-resource-sync 2114b14ee0
Sync main into demo / sync (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:35:26 +08:00

32 lines
871 B
TypeScript

import { useRef, useEffect } from 'react';
export const useScrollPosition = (key: string) => {
const scrollRef = useRef<HTMLDivElement>(null);
useEffect(() => {
const element = scrollRef.current;
if (!element) return;
// Restore scroll position
const savedPosition = sessionStorage.getItem(`scroll_pos_${key}`);
if (savedPosition) {
// Use setTimeout to ensure content is rendered before scrolling
setTimeout(() => {
element.scrollTop = parseInt(savedPosition, 10);
}, 0);
}
// Save scroll position on scroll
const handleScroll = () => {
sessionStorage.setItem(`scroll_pos_${key}`, element.scrollTop.toString());
};
element.addEventListener('scroll', handleScroll);
return () => {
element.removeEventListener('scroll', handleScroll);
};
}, [key]);
return scrollRef;
};