Skip to content

Commit 586144b

Browse files
committed
fix: remove redundant call of serializeQueryArgs when skipToken passed
1 parent 24286f1 commit 586144b

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

packages/toolkit/src/query/core/buildSelectors.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,9 @@ export function buildSelectors<
168168
endpointDefinition: QueryDefinition<any, any, any, any>,
169169
) {
170170
return ((queryArgs: any) => {
171+
if (queryArgs === skipToken) {
172+
return createSelector(selectSkippedQuery, withRequestFlags)
173+
}
171174
const serializedArgs = serializeQueryArgs({
172175
queryArgs,
173176
endpointDefinition,
@@ -176,10 +179,8 @@ export function buildSelectors<
176179
const selectQuerySubstate = (state: RootState) =>
177180
selectInternalState(state)?.queries?.[serializedArgs] ??
178181
defaultQuerySubState
179-
const finalSelectQuerySubState =
180-
queryArgs === skipToken ? selectSkippedQuery : selectQuerySubstate
181182

182-
return createSelector(finalSelectQuerySubState, withRequestFlags)
183+
return createSelector(selectQuerySubstate, withRequestFlags)
183184
}) as QueryResultSelectorFactory<any, RootState>
184185
}
185186

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,12 @@ const api = createApi({
125125
return true
126126
},
127127
}),
128+
queryWithDeepArg: build.query<string, { param: { nested: string } }>({
129+
query: ({ param: { nested }}) => nested,
130+
serializeQueryArgs: ({ queryArgs }) => {
131+
return queryArgs.param.nested
132+
}
133+
}),
128134
}),
129135
})
130136

@@ -667,6 +673,12 @@ describe('hooks tests', () => {
667673
await screen.findByText('ID: 3')
668674
})
669675

676+
test(`useQuery shouldn't call args serialization if request skipped`, async () => {
677+
expect(() => renderHook(() => api.endpoints.queryWithDeepArg.useQuery(skipToken), {
678+
wrapper: storeRef.wrapper,
679+
})).not.toThrow()
680+
})
681+
670682
test(`useQuery gracefully handles bigint types`, async () => {
671683
function ItemList() {
672684
const [pageNumber, setPageNumber] = useState(0)

0 commit comments

Comments
 (0)