Skip to content

Commit ed0734c

Browse files
committed
feat(QueryCache): change logic, changed option to neverRefetchOnMount
1 parent fcb20b0 commit ed0734c

File tree

4 files changed

+15
-11
lines changed

4 files changed

+15
-11
lines changed

docs/src/pages/docs/api.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const {
3232
refetchIntervalInBackground,
3333
queryFnParamsFilter,
3434
refetchOnMount,
35-
alwaysRefetchOnMount,
35+
neverRefetchOnMount,
3636
isDataEqual,
3737
onError,
3838
onSuccess,
@@ -117,10 +117,10 @@ const queryInfo = useQuery({
117117
- Optional
118118
- Defaults to `true`
119119
- If set to `false`, will disable additional instances of a query to trigger background refetches
120-
- `alwaysRefetchOnMount: Boolean`
120+
- `neverRefetchOnMount: Boolean`
121121
- Optional
122122
- Defaults to `false`
123-
- Always refetch on mount sets refetching independent of the number of query instances. If `refetchOnMount` is set to false but only one query instance exists the query would refetch anyway. If `alwaysRefetchOnMount` is set to false though the query will not refetch independent of the number of instances
123+
- Allows for disabling refetching on mount independent of the number of query instances. If `refetchOnMount` is set to false but only one query instance exists the query would refetch anyway. If `neverRefetchOnMount` is set to true though the query will not refetch independent of the number of query instances.
124124
- `queryFnParamsFilter: Function(args) => filteredArgs`
125125
- Optional
126126
- This function will filter the params that get passed to `queryFn`.
@@ -670,7 +670,7 @@ const queryConfig = {
670670
refetchInterval: false,
671671
queryFnParamsFilter: identity,
672672
refetchOnMount: true,
673-
alwaysRefetchOnMount: false,
673+
neverRefetchOnMount: false,
674674
isDataEqual: deepEqual,
675675
onError: noop,
676676
onSuccess: noop,

src/core/config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export const DEFAULT_CONFIG = {
1717
refetchInterval: false,
1818
queryFnParamsFilter: identity,
1919
refetchOnMount: true,
20-
alwaysRefetchOnMount: false,
20+
neverRefetchOnMount: false,
2121
isDataEqual: deepEqual,
2222
onError: noop,
2323
onSuccess: noop,

src/core/queryInstance.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,18 @@ export function makeQueryInstance(query, onStateUpdate) {
5050

5151
instance.run = async () => {
5252
try {
53-
// Perform the refetch for this query if necessary
54-
if (
53+
54+
// Don't refetch on mount when 'neverRefetchOnMount' is set, otherwise only refetch if either only one instance of the query exists or 'refetchOnMount' is set
55+
const shouldRefetchOnMount = query.config.neverRefetchOnMount ? false : (query.config.refetchOnMount || query.instances.length === 1);
56+
57+
if(
58+
(!query.state.isSuccess || shouldRefetchOnMount) && // Make sure first load happens, thereafter only if refetch on mount is requested
5559
query.config.enabled && // Don't auto refetch if disabled
5660
!query.wasSuspended && // Don't double refetch for suspense
57-
query.state.isStale && // Only refetch if stale
58-
((query.config.refetchOnMount || query.instances.length === 1) || query.config.alwaysRefetchOnMount)
61+
query.state.isStale // Only refetch if stale
62+
5963
) {
60-
await query.fetch()
64+
await query.fetch();
6165
}
6266

6367
query.wasSuspended = false

types/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ export interface BaseQueryOptions<TResult = unknown, TError = Error> {
237237
refetchIntervalInBackground?: boolean
238238
refetchOnWindowFocus?: boolean
239239
refetchOnMount?: boolean
240-
alwaysRefetchOnMount?: boolean
240+
neverRefetchOnMount?: boolean
241241
onSuccess?: (data: TResult) => void
242242
onError?: (err: TError) => void
243243
onSettled?: (data: TResult | undefined, error: TError | null) => void

0 commit comments

Comments
 (0)