Skip to content

Commit a1bbd40

Browse files
committed
fix: queries should not end up in an error state when a component unmounts
1 parent c921585 commit a1bbd40

File tree

4 files changed

+11
-14
lines changed

4 files changed

+11
-14
lines changed

src/core/query.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ export class Query<
301301
// we'll let the query continue so the result can be cached
302302
if (this.retryer) {
303303
if (this.retryer.isTransportCancelable) {
304-
this.retryer.cancel()
304+
this.retryer.cancel({ revert: true })
305305
} else {
306306
this.retryer.cancelRetry()
307307
}

src/core/tests/query.test.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,7 @@ describe('query', () => {
247247
expect(cancel).toHaveBeenCalled()
248248
expect(query.state).toMatchObject({
249249
data: undefined,
250-
status: 'error',
251-
errorUpdateCount: 1,
250+
status: 'idle',
252251
})
253252
})
254253

src/react/tests/useInfiniteQuery.test.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,8 @@ describe('useInfiniteQuery', () => {
726726
const states: UseInfiniteQueryResult<number>[] = []
727727
let fetches = 0
728728

729+
const initialData = { pages: [1, 2, 3, 4], pageParams: [1, 2, 3, 4] }
730+
729731
function List() {
730732
const state = useInfiniteQuery(
731733
key,
@@ -735,7 +737,7 @@ describe('useInfiniteQuery', () => {
735737
return Number(pageParam)
736738
},
737739
{
738-
initialData: { pages: [1, 2, 3, 4], pageParams: [1, 2, 3, 4] },
740+
initialData,
739741
getNextPageParam: lastPage => lastPage + 1,
740742
}
741743
)
@@ -764,8 +766,9 @@ describe('useInfiniteQuery', () => {
764766
expect(states.length).toBe(1)
765767
expect(fetches).toBe(2)
766768
expect(queryClient.getQueryState(key)).toMatchObject({
767-
status: 'error',
768-
error: expect.any(CancelledError),
769+
data: initialData,
770+
status: 'success',
771+
error: null,
769772
})
770773
})
771774

src/react/tests/useQuery.test.tsx

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3353,7 +3353,7 @@ describe('useQuery', () => {
33533353
renderWithClient(queryClient, <Page />)
33543354

33553355
await sleep(100)
3356-
expect(states.length).toBe(5)
3356+
expect(states.length).toBe(4)
33573357
// Load query 1
33583358
expect(states[0]).toMatchObject({
33593359
status: 'loading',
@@ -3367,15 +3367,10 @@ describe('useQuery', () => {
33673367
// Load query 1
33683368
expect(states[2]).toMatchObject({
33693369
status: 'loading',
3370-
error: expect.any(CancelledError),
3371-
})
3372-
// State update
3373-
expect(states[3]).toMatchObject({
3374-
status: 'loading',
3375-
error: expect.any(CancelledError),
3370+
error: null,
33763371
})
33773372
// Loaded query 1
3378-
expect(states[4]).toMatchObject({
3373+
expect(states[3]).toMatchObject({
33793374
status: 'success',
33803375
error: null,
33813376
})

0 commit comments

Comments
 (0)