diff --git a/packages/toolkit/src/query/react/buildHooks.ts b/packages/toolkit/src/query/react/buildHooks.ts index 5930281d27..3496e934ef 100644 --- a/packages/toolkit/src/query/react/buildHooks.ts +++ b/packages/toolkit/src/query/react/buildHooks.ts @@ -1535,16 +1535,17 @@ export function buildHooks({ const { endpointName } = lastResult const endpointDefinition = context.endpointDefinitions[endpointName] if ( + queryArgs !== skipToken && serializeQueryArgs({ queryArgs: lastResult.originalArgs, endpointDefinition, endpointName, }) === - serializeQueryArgs({ - queryArgs, - endpointDefinition, - endpointName, - }) + serializeQueryArgs({ + queryArgs, + endpointDefinition, + endpointName, + }) ) lastResult = undefined } diff --git a/packages/toolkit/src/query/tests/buildHooks.test.tsx b/packages/toolkit/src/query/tests/buildHooks.test.tsx index 43306638ad..81af7c40ca 100644 --- a/packages/toolkit/src/query/tests/buildHooks.test.tsx +++ b/packages/toolkit/src/query/tests/buildHooks.test.tsx @@ -2216,6 +2216,41 @@ describe('hooks tests', () => { expect(totalRenderCount()).toBe(3) expect(numRequests).toBe(1) }) + + test('useInfiniteQuery hook does not fetch when the skip token is set', async () => { + function Pokemon() { + const [value, setValue] = useState(0) + + const { isFetching } = pokemonApi.useGetInfinitePokemonInfiniteQuery( + 'fire', + { + skip: value < 1, + }, + ) + getRenderCount = useRenderCounter() + + return ( +
+
{String(isFetching)}
+ +
+ ) + } + + render(, { wrapper: storeRef.wrapper }) + expect(getRenderCount()).toBe(1) + + await waitFor(() => + expect(screen.getByTestId('isFetching').textContent).toBe('false'), + ) + fireEvent.click(screen.getByText('Increment value')) + await waitFor(() => + expect(screen.getByTestId('isFetching').textContent).toBe('true'), + ) + expect(getRenderCount()).toBe(2) + }) }) describe('useMutation', () => {