Skip to content

Commit 55560b2

Browse files
committed
📝 Merge API slice util docs
- Merge 'Cache Management Utils' & 'Miscellaneous Utils' into 'API Slice Utils' - Add re-direct from `cache-management-utils` to `api-slice-utils`
1 parent 0ca9b98 commit 55560b2

File tree

6 files changed

+73
-100
lines changed

6 files changed

+73
-100
lines changed

docs/rtk-query/api/created-api/cache-management-utils.mdx renamed to docs/rtk-query/api/created-api/api-slice-utils.mdx

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
---
2-
id: cache-management-utils
3-
title: 'API Slices: Cache Management'
4-
sidebar_label: Cache Management Utils
2+
id: api-slice-utils
3+
title: 'API Slices: Utilities'
4+
sidebar_label: API Slice Utilities
55
hide_title: true
66
---
77

88
 
99

10-
# API Slices: Cache Management Utilities
10+
# API Slices: Utilities
1111

12-
The API slice object includes cache management utilities that are used for implementing [optimistic updates](../../usage/manual-cache-updates.mdx#optimistic-updates). These are included in a `util` field inside the slice object.
12+
The API slice object includes various utilities that can be used for cache management,
13+
such as implementing [optimistic updates](../../usage/manual-cache-updates.mdx#optimistic-updates),
14+
as well implementing [server side rendering](../../usage/server-side-rendering.mdx).
15+
16+
These are included in a `util` field inside the slice object.
1317

1418
### `updateQueryData`
1519

@@ -197,3 +201,51 @@ Note that [hooks](./hooks.mdx) also track state in local component state and mig
197201
```ts no-transpile
198202
dispatch(api.util.resetApiState())
199203
```
204+
205+
## `getRunningOperationPromises`
206+
207+
#### Signature
208+
209+
```ts no-transpile
210+
getRunningOperationPromises: () => Array<Promise<unknown>>
211+
```
212+
213+
#### Description
214+
215+
A function that returns all promises for running queries and mutations.
216+
217+
This is useful for SSR scenarios to await everything triggered in any way, including via hook calls,
218+
or manually dispatching `initiate` actions.
219+
220+
```ts no-transpile title="Awaiting all currently running queries & mutations example"
221+
await Promise.all(api.util.getRunningOperationPromises())
222+
```
223+
224+
## `getRunningOperationPromise`
225+
226+
#### Signature
227+
228+
```ts no-transpile
229+
getRunningOperationPromise: <EndpointName extends QueryKeys<Definitions>>(
230+
endpointName: EndpointName,
231+
args: QueryArgFrom<Definitions[EndpointName]>
232+
) =>
233+
| QueryActionCreatorResult<Definitions[EndpointName]>
234+
| undefined
235+
236+
getRunningOperationPromise: <EndpointName extends MutationKeys<Definitions>>(
237+
endpointName: EndpointName,
238+
fixedCacheKeyOrRequestId: string
239+
) =>
240+
| MutationActionCreatorResult<Definitions[EndpointName]>
241+
| undefined
242+
```
243+
244+
#### Description
245+
246+
A function that returns a single promise for a given endpoint name + argument combination,
247+
if it is currently running. If it is not currently running, the function returns `undefined`.
248+
249+
This is primarily added to add experimental support for suspense in the future.
250+
It enables writing custom hooks that look up if RTK Query has already got a running promise
251+
for a certain endpoint/argument combination, and retrieving that promise to `throw` it.

docs/rtk-query/api/created-api/miscellaneous-utils.mdx

Lines changed: 0 additions & 68 deletions
This file was deleted.

docs/rtk-query/api/created-api/overview.mdx

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ type Api = {
4444
injectEndpoints: (options: InjectEndpointsOptions) => UpdatedApi
4545
enhanceEndpoints: (options: EnhanceEndpointsOptions) => UpdatedApi
4646

47-
// Cache management utilities
47+
// Utilities
4848
utils: {
4949
updateQueryData: UpdateQueryDataThunk
5050
patchQueryData: PatchQueryDataThunk
@@ -54,18 +54,16 @@ type Api = {
5454
string
5555
>
5656
resetApiState: SliceActions['resetApiState']
57+
getRunningOperationPromises: () => Array<Promise<unknown>>
58+
getRunningOperationPromise: <EndpointName extends QueryKeys<Definitions>>(
59+
endpointName: EndpointName,
60+
args: QueryArgFrom<Definitions[EndpointName]>
61+
) =>
62+
| QueryActionCreatorResult<Definitions[EndpointName]>
63+
| MutationActionCreatorResult<Definitions[EndpointName]>
64+
| undefined
5765
}
5866

59-
// Miscellaneous utilities
60-
getRunningOperationPromises: () => Array<Promise<unknown>>
61-
getRunningOperationPromise: <EndpointName extends QueryKeys<Definitions>>(
62-
endpointName: EndpointName,
63-
args: QueryArgFrom<Definitions[EndpointName]>
64-
) =>
65-
| QueryActionCreatorResult<Definitions[EndpointName]>
66-
| MutationActionCreatorResult<Definitions[EndpointName]>
67-
| undefined
68-
6967
// Internal actions
7068
internalActions: InternalActions
7169

@@ -110,25 +108,16 @@ Each API slice object has `injectEndpoints` and `enhanceEndpoints` functions to
110108
111109
:::
112110
113-
## Cache Management Utilities
111+
## API Slice Utilities
114112
115113
The `util` field includes various utility functions that can be used to manage the cache, including
116114
manually updating query cache data, triggering pre-fetching of data, manually invalidating tags,
117-
and manually resetting the api state.
118-
119-
:::info API Reference
120-
121-
- [API Slices: Cache Management Utilities](./cache-management-utils.mdx)
122-
123-
:::
124-
125-
## Miscellaneous Utilities
126-
127-
Miscellaneous utilities are provided that can be used in various scenarios, including SSR.
115+
and manually resetting the api state, as well as other utility functions that can be used in
116+
various scenarios, including SSR.
128117
129118
:::info API Reference
130119
131-
- [API Slices: Miscellaneous Utilities](./miscellaneous-utils.mdx)
120+
- [API Slices: Utilities](./api-slice-utils.mdx)
132121
133122
:::
134123

docs/rtk-query/usage/manual-cache-updates.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ unless you encounter the need to do so.
2121

2222
However, in some cases, you may want to update the cache manually. When you wish to update cache
2323
data that _already exists_ for query endpoints, you can do so using the
24-
[`updateQueryData`](../api/created-api/cache-management-utils.mdx#updatequerydata) thunk action
24+
[`updateQueryData`](../api/created-api/api-slice-utils.mdx#updatequerydata) thunk action
2525
available on the `util` object of your created API.
2626

2727
Anywhere you have access to the `dispatch` method for the store instance, you can dispatch the

website/_redirects

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@
1111

1212
# Relocated content
1313
/rtk-query/usage/optimistic-updates /rtk-query/usage/manual-cache-updates#optimistic-updates
14+
/rtk-query/api/created-api/cache-management-utils /rtk-query/api/created-api/api-slice-utils

website/sidebars.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,7 @@
120120
"rtk-query/api/created-api/redux-integration",
121121
"rtk-query/api/created-api/endpoints",
122122
"rtk-query/api/created-api/code-splitting",
123-
"rtk-query/api/created-api/cache-management-utils",
124-
"rtk-query/api/created-api/miscellaneous-utils",
123+
"rtk-query/api/created-api/api-slice-utils",
125124
"rtk-query/api/created-api/hooks"
126125
]
127126
}

0 commit comments

Comments
 (0)