diff --git a/packages/query-core/src/__tests__/infiniteQueryBehavior.test.tsx b/packages/query-core/src/__tests__/infiniteQueryBehavior.test.tsx index 1ca35fdfcf..dffdd3e12c 100644 --- a/packages/query-core/src/__tests__/infiniteQueryBehavior.test.tsx +++ b/packages/query-core/src/__tests__/infiniteQueryBehavior.test.tsx @@ -396,4 +396,32 @@ describe('InfiniteQueryBehavior', () => { expect(reFetchedData.data?.pageParams).toEqual([1, 2, 3]) }) + + test('should fetch even if initialPageParam is null', async () => { + const key = queryKey() + + const observer = new InfiniteQueryObserver(queryClient, { + queryKey: key, + queryFn: async () => 'data', + getNextPageParam: () => null, + initialPageParam: null, + }) + + let observerResult: + | InfiniteQueryObserverResult + | undefined + + const unsubscribe = observer.subscribe((result) => { + observerResult = result + }) + + await waitFor(() => + expect(observerResult).toMatchObject({ + isFetching: false, + data: { pages: ['data'], pageParams: [null] }, + }), + ) + + unsubscribe() + }) }) diff --git a/packages/query-core/src/infiniteQueryBehavior.ts b/packages/query-core/src/infiniteQueryBehavior.ts index 04de4f7a30..9dc28f230e 100644 --- a/packages/query-core/src/infiniteQueryBehavior.ts +++ b/packages/query-core/src/infiniteQueryBehavior.ts @@ -99,7 +99,7 @@ export function infiniteQueryBehavior( currentPage === 0 ? (oldPageParams[0] ?? options.initialPageParam) : getNextPageParam(options, result) - if (param == null) { + if (currentPage > 0 && param == null) { break } result = await fetchPage(result, param)