Skip to content

Commit a4ff941

Browse files
committed
feat(infiniteQuery): add possibility to decide which pages should be refetched
refetchPage signature now takes page, index, allPages this is the same signature as e.g. Array.prototype.map
1 parent 9d89c15 commit a4ff941

File tree

4 files changed

+11
-7
lines changed

4 files changed

+11
-7
lines changed

src/core/infiniteQueryBehavior.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ export function infiniteQueryBehavior<
109109

110110
const shouldFetchFirstPage =
111111
refetchPage && oldPages[0]
112-
? refetchPage(oldPages[0], oldPages)
112+
? refetchPage(oldPages[0], 0, oldPages)
113113
: true
114114

115115
// Fetch first page
@@ -122,7 +122,7 @@ export function infiniteQueryBehavior<
122122
promise = promise.then(pages => {
123123
const shouldFetchNextPage =
124124
refetchPage && oldPages[i]
125-
? refetchPage(oldPages[i], oldPages)
125+
? refetchPage(oldPages[i], i, oldPages)
126126
: true
127127

128128
if (shouldFetchNextPage) {

src/core/tests/queryClient.test.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -946,7 +946,7 @@ describe('queryClient', () => {
946946

947947
await queryClient.refetchQueries(
948948
{ queryKey: key },
949-
{ refetchPage: (page, allPages) => page === allPages[0] }
949+
{ refetchPage: (_, index) => index === 0 }
950950
)
951951

952952
expect(queryClient.getQueryData(key)).toMatchObject({
@@ -974,7 +974,7 @@ describe('queryClient', () => {
974974
await queryClient.invalidateQueries(
975975
{ queryKey: key, refetchInactive: true },
976976
{
977-
refetchPage: (page, allPages) => {
977+
refetchPage: (page, _, allPages) => {
978978
return page === allPages[0]
979979
},
980980
}
@@ -1007,7 +1007,7 @@ describe('queryClient', () => {
10071007
await queryClient.resetQueries(
10081008
{ queryKey: key, inactive: true },
10091009
{
1010-
refetchPage: (page, allPages) => {
1010+
refetchPage: (page, _, allPages) => {
10111011
return page === allPages[0]
10121012
},
10131013
}

src/core/types.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,11 @@ export interface ResultOptions {
237237
}
238238

239239
export interface RefetchPageOptions<TQueryFnData = unknown> {
240-
refetchPage: (lastPage: TQueryFnData, allPages: TQueryFnData[]) => boolean
240+
refetchPage: (
241+
lastPage: TQueryFnData,
242+
index: number,
243+
allPages: TQueryFnData[]
244+
) => boolean
241245
}
242246

243247
export interface RefetchOptions<TQueryFnData = unknown>

src/react/tests/useInfiniteQuery.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ describe('useInfiniteQuery', () => {
619619
setActTimeout(() => {
620620
multiplier.current = 2
621621
refetch({
622-
refetchPage: (page, allPages) => page === allPages[0],
622+
refetchPage: (_, index) => index === 0,
623623
})
624624
}, 20)
625625
}, [fetchNextPage, refetch])

0 commit comments

Comments
 (0)