forked from TanStack/query
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathPersistQueryClientProvider.tsx
More file actions
44 lines (37 loc) · 1.07 KB
/
PersistQueryClientProvider.tsx
File metadata and controls
44 lines (37 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import React from 'react'
import { persistQueryClient, PersistQueryClientOptions } from './persist'
import {
QueryClientProvider,
QueryClientProviderProps,
IsHydratingProvider,
} from '../reactjs'
export interface PersistQueryClientProviderProps
extends QueryClientProviderProps {
persistOptions: Omit<PersistQueryClientOptions, 'queryClient'>
}
export const PersistQueryClientProvider = ({
client,
children,
persistOptions,
...props
}: PersistQueryClientProviderProps): JSX.Element => {
const [isHydrating, setIsHydrating] = React.useState(true)
const options = React.useRef(persistOptions)
React.useEffect(() => {
let unsubscribe: (() => void) | undefined
async function run() {
unsubscribe = await persistQueryClient({
...options.current,
queryClient: client,
})
setIsHydrating(false)
}
void run()
return unsubscribe
}, [client])
return (
<QueryClientProvider client={client} {...props}>
<IsHydratingProvider value={isHydrating}>{children}</IsHydratingProvider>
</QueryClientProvider>
)
}