Skip to content

Commit c539030

Browse files
authored
add infinite query skip support (#4906)
1 parent 418906f commit c539030

File tree

2 files changed

+41
-5
lines changed

2 files changed

+41
-5
lines changed

packages/toolkit/src/query/react/buildHooks.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -1535,16 +1535,17 @@ export function buildHooks<Definitions extends EndpointDefinitions>({
15351535
const { endpointName } = lastResult
15361536
const endpointDefinition = context.endpointDefinitions[endpointName]
15371537
if (
1538+
queryArgs !== skipToken &&
15381539
serializeQueryArgs({
15391540
queryArgs: lastResult.originalArgs,
15401541
endpointDefinition,
15411542
endpointName,
15421543
}) ===
1543-
serializeQueryArgs({
1544-
queryArgs,
1545-
endpointDefinition,
1546-
endpointName,
1547-
})
1544+
serializeQueryArgs({
1545+
queryArgs,
1546+
endpointDefinition,
1547+
endpointName,
1548+
})
15481549
)
15491550
lastResult = undefined
15501551
}

packages/toolkit/src/query/tests/buildHooks.test.tsx

+35
Original file line numberDiff line numberDiff line change
@@ -2216,6 +2216,41 @@ describe('hooks tests', () => {
22162216
expect(totalRenderCount()).toBe(3)
22172217
expect(numRequests).toBe(1)
22182218
})
2219+
2220+
test('useInfiniteQuery hook does not fetch when the skip token is set', async () => {
2221+
function Pokemon() {
2222+
const [value, setValue] = useState(0)
2223+
2224+
const { isFetching } = pokemonApi.useGetInfinitePokemonInfiniteQuery(
2225+
'fire',
2226+
{
2227+
skip: value < 1,
2228+
},
2229+
)
2230+
getRenderCount = useRenderCounter()
2231+
2232+
return (
2233+
<div>
2234+
<div data-testid="isFetching">{String(isFetching)}</div>
2235+
<button onClick={() => setValue((val) => val + 1)}>
2236+
Increment value
2237+
</button>
2238+
</div>
2239+
)
2240+
}
2241+
2242+
render(<Pokemon />, { wrapper: storeRef.wrapper })
2243+
expect(getRenderCount()).toBe(1)
2244+
2245+
await waitFor(() =>
2246+
expect(screen.getByTestId('isFetching').textContent).toBe('false'),
2247+
)
2248+
fireEvent.click(screen.getByText('Increment value'))
2249+
await waitFor(() =>
2250+
expect(screen.getByTestId('isFetching').textContent).toBe('true'),
2251+
)
2252+
expect(getRenderCount()).toBe(2)
2253+
})
22192254
})
22202255

22212256
describe('useMutation', () => {

0 commit comments

Comments
 (0)