mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-07 04:20:12 +02:00
fix item grid calling onScrollEnd on initial render
This commit is contained in:
@@ -106,6 +106,8 @@ const VirtualizedGridList = React.memo(
|
|||||||
}: VirtualizedGridListProps) => {
|
}: VirtualizedGridListProps) => {
|
||||||
const tableMeta = tableMetaRef.current;
|
const tableMeta = tableMetaRef.current;
|
||||||
const scrollEndTimeoutRef = useRef<NodeJS.Timeout | null>(null);
|
const scrollEndTimeoutRef = useRef<NodeJS.Timeout | null>(null);
|
||||||
|
const isInitialScrollRef = useRef(true);
|
||||||
|
const initialScrollOffsetRef = useRef<null | number>(null);
|
||||||
|
|
||||||
const itemData: GridItemProps = useMemo(() => {
|
const itemData: GridItemProps = useMemo(() => {
|
||||||
return {
|
return {
|
||||||
@@ -144,6 +146,16 @@ const VirtualizedGridList = React.memo(
|
|||||||
({ scrollDirection, scrollOffset }: ListOnScrollProps) => {
|
({ scrollDirection, scrollOffset }: ListOnScrollProps) => {
|
||||||
onScroll?.(scrollOffset, scrollDirection === 'forward' ? 'down' : 'up');
|
onScroll?.(scrollOffset, scrollDirection === 'forward' ? 'down' : 'up');
|
||||||
|
|
||||||
|
if (isInitialScrollRef.current) {
|
||||||
|
if (initialScrollOffsetRef.current === null) {
|
||||||
|
initialScrollOffsetRef.current = scrollOffset;
|
||||||
|
return;
|
||||||
|
} else if (Math.abs(initialScrollOffsetRef.current - scrollOffset) < 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
isInitialScrollRef.current = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (scrollEndTimeoutRef.current) {
|
if (scrollEndTimeoutRef.current) {
|
||||||
clearTimeout(scrollEndTimeoutRef.current);
|
clearTimeout(scrollEndTimeoutRef.current);
|
||||||
}
|
}
|
||||||
@@ -175,6 +187,11 @@ const VirtualizedGridList = React.memo(
|
|||||||
[onRangeChanged, tableMetaRef],
|
[onRangeChanged, tableMetaRef],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
isInitialScrollRef.current = true;
|
||||||
|
initialScrollOffsetRef.current = null;
|
||||||
|
}, [initialTop]);
|
||||||
|
|
||||||
if (!tableMeta) {
|
if (!tableMeta) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user