Skip to content

Commit cbcfd8a

Browse files
authored
fix: avoid stale scroll retry sync (#1495)
1 parent 204d749 commit cbcfd8a

2 files changed

Lines changed: 47 additions & 4 deletions

File tree

src/Table.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -465,11 +465,11 @@ const Table = <RecordType extends DefaultRecordType>(
465465

466466
// Delay to force scroll position if not sync
467467
// ref: https://github.com/ant-design/ant-design/issues/37179
468-
if (target.scrollLeft !== scrollLeft) {
469-
setTimeout(() => {
468+
setTimeout(() => {
469+
if (target.scrollLeft !== scrollLeft) {
470470
target.scrollLeft = scrollLeft;
471-
}, 0);
472-
}
471+
}
472+
}, 0);
473473
}
474474
}
475475

tests/Table.spec.jsx

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1322,4 +1322,47 @@ describe('Table.Basic', () => {
13221322
fireEvent.scroll(tableBody);
13231323
expect(onScroll).toHaveBeenCalled();
13241324
});
1325+
1326+
it('does not retry stale scrollLeft sync', () => {
1327+
vi.useFakeTimers();
1328+
1329+
try {
1330+
const { container } = render(
1331+
createTable({
1332+
scroll: { x: 100, y: 100 },
1333+
}),
1334+
);
1335+
1336+
const tableHeader = container.querySelector('.rc-table-header');
1337+
const tableBody = container.querySelector('.rc-table-body');
1338+
let headerScrollLeft = 0;
1339+
let bodyScrollLeft = 0;
1340+
1341+
Object.defineProperty(tableHeader, 'scrollLeft', {
1342+
get() {
1343+
return headerScrollLeft;
1344+
},
1345+
set(value) {
1346+
headerScrollLeft = Math.trunc(value);
1347+
},
1348+
});
1349+
Object.defineProperty(tableBody, 'scrollLeft', {
1350+
get() {
1351+
return bodyScrollLeft;
1352+
},
1353+
});
1354+
1355+
bodyScrollLeft = 794.171875;
1356+
fireEvent.scroll(tableBody);
1357+
1358+
bodyScrollLeft = 0;
1359+
fireEvent.scroll(tableBody);
1360+
1361+
vi.runAllTimers();
1362+
1363+
expect(headerScrollLeft).toBe(0);
1364+
} finally {
1365+
vi.useRealTimers();
1366+
}
1367+
});
13251368
});

0 commit comments

Comments
 (0)