Skip to content

Commit 4361a88

Browse files
authored
docs: prefer default config of QueryCache (TanStack#1034)
1 parent abf386b commit 4361a88

File tree

5 files changed

+94
-64
lines changed

5 files changed

+94
-64
lines changed

docs/src/pages/docs/api.md

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -689,44 +689,62 @@ const isFetching = useIsFetching()
689689
`ReactQueryConfigProvider` is an optional provider component and can be used to define defaults for all instances of `useQuery` within it's sub-tree:
690690

691691
```js
692-
import { ReactQueryConfigProvider } from 'react-query'
692+
import {
693+
QueryCache,
694+
ReactQueryCacheProvider,
695+
ReactQueryConfigProvider,
696+
} from 'react-query'
693697

694-
const queryConfig = {
698+
const queryCache = new QueryCache({
699+
defaultConfig: {
700+
queries: {
701+
suspense: false,
702+
queryKeySerializerFn: defaultQueryKeySerializerFn,
703+
queryFn,
704+
enabled: true,
705+
retry: 3,
706+
retryDelay: attemptIndex => Math.min(1000 * 2 ** attemptIndex, 30000),
707+
staleTime: 0,
708+
cacheTime: 5 * 60 * 1000,
709+
refetchOnWindowFocus: true,
710+
refetchInterval: false,
711+
queryFnParamsFilter: identity,
712+
refetchOnMount: true,
713+
isDataEqual: deepEqual,
714+
onError: noop,
715+
onSuccess: noop,
716+
onSettled: noop,
717+
useErrorBoundary: false, // falls back to suspense
718+
},
719+
mutations: {
720+
suspense: false,
721+
throwOnError: false,
722+
onMutate: noop,
723+
onError: noop,
724+
onSuccess: noop,
725+
onSettled: noop,
726+
useErrorBoundary: false, // falls back to suspense
727+
},
728+
},
729+
})
730+
731+
const overrides = {
695732
queries: {
696-
suspense: false,
697-
queryKeySerializerFn: defaultQueryKeySerializerFn,
698-
queryFn,
699-
enabled: true,
700-
retry: 3,
701-
retryDelay: attemptIndex => Math.min(1000 * 2 ** attemptIndex, 30000),
702-
staleTime: 0,
703-
cacheTime: 5 * 60 * 1000,
704-
refetchOnWindowFocus: true,
705-
refetchInterval: false,
706-
queryFnParamsFilter: identity,
707-
refetchOnMount: true,
708-
isDataEqual: deepEqual,
709-
onError: noop,
710-
onSuccess: noop,
711-
onSettled: noop,
712-
useErrorBoundary: false, // falls back to suspense
733+
suspense: true,
713734
},
714735
mutations: {
715-
suspense: false,
716-
throwOnError: false,
717-
onMutate: noop,
718-
onError: noop,
719-
onSuccess: noop,
720-
onSettled: noop,
721-
useErrorBoundary: false, // falls back to suspense
736+
suspense: true,
722737
},
723738
}
724739

725740
function App() {
726741
return (
727-
<ReactQueryConfigProvider config={queryConfig}>
742+
<ReactQueryCacheProvider queryCache={queryCache}>
728743
...
729-
</ReactQueryConfigProvider>
744+
<ReactQueryConfigProvider config={overrides}>
745+
...
746+
</ReactQueryConfigProvider>
747+
</ReactQueryCacheProvider>
730748
)
731749
}
732750
```

docs/src/pages/docs/guides/default-query-function.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,20 @@ const defaultQueryFn = async key => {
1212
return data
1313
}
1414

15+
// provide the default query function to your app with defaultConfig
16+
const queryCache = new QueryCache({
17+
defaultConfig: {
18+
queries: {
19+
queryFn: defaultQueryFn,
20+
},
21+
},
22+
})
23+
1524
function App() {
16-
// provide the default query function to your app via the config provider
1725
return (
18-
<ReactQueryConfigProvider
19-
config={{
20-
queries: {
21-
queryFn: defaultQueryFn,
22-
},
23-
}}
24-
>
26+
<ReactQueryCacheProvider queryCache={queryCache}>
2527
<YourApp />
26-
</ReactQueryConfigProvider>
28+
</ReactQueryCacheProvider>
2729
)
2830
}
2931

docs/src/pages/docs/guides/query-retries.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,21 @@ The default `retryDelay` is set to double (starting at `1000`ms) with each attem
2929

3030
```js
3131
// Configure for all queries
32-
import { ReactQueryConfigProvider } from 'react-query'
32+
import { QueryCache, ReactQueryCacheProvider } from 'react-query'
3333

34-
const queryConfig = {
35-
queries: {
36-
retryDelay: attemptIndex => Math.min(1000 * 2 ** attemptIndex, 30000),
34+
const queryCache = new QueryCache({
35+
defaultConfig: {
36+
queries: {
37+
retryDelay: attemptIndex => Math.min(1000 * 2 ** attemptIndex, 30000),
38+
},
3739
},
38-
}
40+
})
3941

4042
function App() {
4143
return (
42-
<ReactQueryConfigProvider config={queryConfig}>
44+
<ReactQueryCacheProvider queryCache={queryCache}>
4345
...
44-
</ReactQueryConfigProvider>
46+
</ReactQueryCacheProvider>
4547
)
4648
}
4749
```

docs/src/pages/docs/guides/suspense.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,21 @@ Global configuration:
1111

1212
```js
1313
// Configure for all queries
14-
import { ReactQueryConfigProvider } from 'react-query'
14+
import { QueryCache, ReactQueryCacheProvider } from 'react-query'
1515

16-
const queryConfig = {
17-
queries: {
18-
suspense: true,
16+
const queryCache = new QueryCache({
17+
defaultConfig: {
18+
queries: {
19+
suspense: true,
20+
},
1921
},
20-
}
22+
})
2123

2224
function App() {
2325
return (
24-
<ReactQueryConfigProvider config={queryConfig}>
26+
<ReactQueryCacheProvider queryCache={queryCache}>
2527
...
26-
</ReactQueryConfigProvider>
28+
</ReactQueryCacheProvider>
2729
)
2830
}
2931
```

docs/src/pages/docs/guides/window-focus-refetching.md

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,22 @@ id: window-focus-refetching
33
title: Window Focus Refetching
44
---
55

6-
If a user leaves your application and returns to stale data, you may want to trigger an update in the background to update any stale queries. Thankfully, **React Query does this automatically for you**, but if you choose to disable it, you can use the `ReactQueryConfigProvider`'s `refetchOnWindowFocus` option to disable it:
6+
If a user leaves your application and returns to stale data, you may want to trigger an update in the background to update any stale queries. Thankfully, **React Query does this automatically for you**, but if you choose to disable it, you can use the `refetchOnWindowFocus` option to disable it:
77

88
```js
9-
const queryConfig = { queries: { refetchOnWindowFocus: false } }
9+
const queryCache = new QueryCache({
10+
defaultConfig: {
11+
queries: {
12+
refetchOnWindowFocus: false,
13+
},
14+
},
15+
})
1016

1117
function App() {
1218
return (
13-
<ReactQueryConfigProvider config={queryConfig}>
19+
<ReactQueryCacheProvider queryCache={queryCache}>
1420
...
15-
</ReactQueryConfigProvider>
21+
</ReactQueryCacheProvider>
1622
)
1723
}
1824
```
@@ -53,16 +59,16 @@ setFocusHandler(onWindowFocus) // Boom!
5359
Instead of event listeners on `window`, React Native provides focus information through the [`AppState` module](https://reactnative.dev/docs/appstate#app-states). You can use the `AppState` "change" event to trigger an update when the app state changes to "active":
5460

5561
```js
56-
import { setFocusHandler } from 'react-query';
57-
import { AppState } from 'react-native';
62+
import { setFocusHandler } from 'react-query'
63+
import { AppState } from 'react-native'
5864

59-
setFocusHandler((handleFocus) => {
60-
const handleAppStateChange = (appState) => {
65+
setFocusHandler(handleFocus => {
66+
const handleAppStateChange = appState => {
6167
if (appState === 'active') {
62-
handleFocus();
68+
handleFocus()
6369
}
64-
};
65-
AppState.addEventListener('change', handleAppStateChange);
66-
return () => AppState.removeEventListener('change', handleAppStateChange);
67-
});
70+
}
71+
AppState.addEventListener('change', handleAppStateChange)
72+
return () => AppState.removeEventListener('change', handleAppStateChange)
73+
})
6874
```

0 commit comments

Comments
 (0)