Skip to content

Commit d312fb3

Browse files
authored
fix: end should not exceed len (#224)
1 parent 282f9b6 commit d312fb3

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/List.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ export function RawList<T>(props: ListProps<T>, ref: React.Ref<ListRef>) {
239239
}
240240

241241
// Give cache to improve scroll experience
242-
endIndex = Math.min(endIndex + 1, mergedData.length);
242+
endIndex = Math.min(endIndex + 1, mergedData.length - 1);
243243

244244
return {
245245
scrollHeight: itemTop,

tests/scroll.test.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,4 +336,34 @@ describe('List.Scroll', () => {
336336

337337
expect(spyPreventDefault).toHaveBeenCalled();
338338
});
339+
340+
it('scroll to end should not has wrong extraRender', () => {
341+
const extraRender = jest.fn(({ start, end }) => {
342+
return null;
343+
});
344+
345+
jest.useFakeTimers();
346+
const { container } = genList(
347+
{
348+
itemHeight: 20,
349+
height: 100,
350+
data: genData(100),
351+
extraRender,
352+
},
353+
render,
354+
);
355+
356+
const holder = container.querySelector('ul');
357+
358+
const event = createEvent.wheel(holder, {
359+
deltaY: 99999999999999999999,
360+
});
361+
fireEvent(holder, event);
362+
363+
act(() => {
364+
jest.runAllTimers();
365+
});
366+
367+
expect(extraRender).toHaveBeenCalledWith(expect.objectContaining({ end: 99 }));
368+
});
339369
});

0 commit comments

Comments
 (0)