Skip to content

Commit 17cb4b0

Browse files
authored
perf: reduce triggerScroll call times (#728)
1 parent ee8612e commit 17cb4b0

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/Table.tsx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -497,8 +497,11 @@ function Table<RecordType extends DefaultRecordType>(props: TableProps<RecordTyp
497497
};
498498

499499
const triggerOnScroll = () => {
500-
if (scrollBodyRef.current) {
500+
if (horizonScroll && scrollBodyRef.current) {
501501
onScroll({ currentTarget: scrollBodyRef.current } as React.UIEvent<HTMLDivElement>);
502+
} else {
503+
setPingedLeft(false);
504+
setPingedRight(false);
502505
}
503506
};
504507

@@ -510,20 +513,17 @@ function Table<RecordType extends DefaultRecordType>(props: TableProps<RecordTyp
510513
};
511514

512515
// Sync scroll bar when init or `horizonScroll`, `data` and `columns.length` changed
513-
React.useEffect(() => triggerOnScroll, []);
516+
const mounted = React.useRef(false);
514517
React.useEffect(() => {
515-
if (horizonScroll) {
518+
// onFullTableResize will be trigger once when ResizeObserver is mounted
519+
// This will reduce one duplicated triggerOnScroll time
520+
if (mounted.current) {
516521
triggerOnScroll();
517522
}
518-
}, [data, columns.length]);
523+
}, [horizonScroll, data, columns.length]);
519524
React.useEffect(() => {
520-
if (horizonScroll) {
521-
triggerOnScroll();
522-
} else {
523-
setPingedLeft(false);
524-
setPingedRight(false);
525-
}
526-
}, [horizonScroll]);
525+
mounted.current = true;
526+
}, []);
527527

528528
// ===================== Effects ======================
529529
const [scrollbarSize, setScrollbarSize] = React.useState(0);

0 commit comments

Comments
 (0)