Skip to content

Commit

Permalink
fix(useInfiniteScroll): reload data should be latest (#2124)
Browse files Browse the repository at this point in the history
* fix: reload data should be latest

* test: add test case
  • Loading branch information
hchlq authored Mar 23, 2023
1 parent a93d3ed commit 7aca7db
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 6 deletions.
29 changes: 29 additions & 0 deletions packages/hooks/src/useInfiniteScroll/__tests__/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,35 @@ describe('useInfiniteScroll', () => {
});
});

it('reload data should be latest', async () => {
let listCount = 5;
const mockRequestFn = async () => {
await sleep(1000);
return {
list: Array.from({
length: listCount,
}).map((_, index) => index + 1),
nextId: listCount,
hasMore: listCount > 2,
};
};

const { result } = setup(mockRequestFn);

await act(async () => {
jest.advanceTimersByTime(1000);
});
expect(result.current.data).toMatchObject({ list: [1, 2, 3, 4, 5], nextId: 5 });

listCount = 3;
await act(async () => {
result.current.reload();
jest.advanceTimersByTime(1000);
});

expect(result.current.data).toMatchObject({ list: [1, 2, 3], nextId: 3 });
});

it('mutate should be work', async () => {
const { result } = setup(mockRequest);
const { mutate } = result.current;
Expand Down
12 changes: 6 additions & 6 deletions packages/hooks/src/useInfiniteScroll/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,17 +63,17 @@ const useInfiniteScroll = <TData extends Data>(
},
);

const loadMore = () => {
const loadMore = useMemoizedFn(() => {
if (noMore) return;
setLoadingMore(true);
run(finalData);
};
});

const loadMoreAsync = () => {
const loadMoreAsync = useMemoizedFn(() => {
if (noMore) return Promise.reject();
setLoadingMore(true);
return runAsync(finalData);
};
});

const reload = () => {
setLoadingMore(false);
Expand Down Expand Up @@ -123,8 +123,8 @@ const useInfiniteScroll = <TData extends Data>(
loadingMore,
noMore,

loadMore: useMemoizedFn(loadMore),
loadMoreAsync: useMemoizedFn(loadMoreAsync),
loadMore,
loadMoreAsync,
reload: useMemoizedFn(reload),
reloadAsync: useMemoizedFn(reloadAsync),
mutate: setFinalData,
Expand Down

0 comments on commit 7aca7db

Please sign in to comment.