Skip to content

Commit 7d786c7

Browse files
committed
Fix suspense double rendering
Fixes TanStack#324
1 parent c83bb19 commit 7d786c7

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

src/useBaseQuery.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,15 @@ export function useBaseQuery(queryKey, queryVariables, queryFn, config = {}) {
7474
if (
7575
!getLatestConfig().manual && // Don't auto fetch if config is set to manual query
7676
!query.wasPrefetched && // Don't double fetch for prefetched queries
77-
!query.wasSuspensed && // Don't double fetch for suspense
77+
!query.wasSuspended && // Don't double fetch for suspense
7878
query.state.isStale && // Only refetch if stale
7979
(getLatestConfig().refetchOnMount || query.instances.length === 1)
8080
) {
8181
refetch().catch(Console.error)
8282
}
8383

8484
query.wasPrefetched = false
85-
query.wasSuspensed = false
85+
query.wasSuspended = false
8686

8787
return unsubscribeFromQuery
8888
}, [getLatestConfig, instanceId, query, refetch, rerender])

src/utils.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ export function getQueryArgs(args) {
9999
throw new Error('queryKey and queryFn keys are required.')
100100
}
101101
}
102+
102103
if (typeof args[2] === 'function') {
103104
const [queryKey, variables = [], queryFn, config = {}] = args
104105
return [queryKey, variables, queryFn, config]
@@ -121,17 +122,17 @@ export function useMountedCallback(callback) {
121122
)
122123
}
123124

124-
export function handleSuspense(query) {
125-
if (query.config.suspense || query.config.useErrorBoundary) {
126-
if (query.status === statusError) {
127-
throw query.error
125+
export function handleSuspense(queryInfo) {
126+
if (queryInfo.config.suspense || queryInfo.config.useErrorBoundary) {
127+
if (queryInfo.status === statusError) {
128+
throw queryInfo.error
128129
}
129130
}
130131

131-
if (query.config.suspense) {
132-
if (query.status === statusLoading) {
133-
query.wasSuspensed = true
134-
throw query.refetch()
132+
if (queryInfo.config.suspense) {
133+
if (queryInfo.status === statusLoading) {
134+
queryInfo.query.wasSuspended = true
135+
throw queryInfo.refetch()
135136
}
136137
}
137138
}

0 commit comments

Comments
 (0)