Skip to content

Commit d8edc4f

Browse files
committed
Merge branch 'master' of https://github.com/reduxjs/redux-toolkit into codegen-vitest
2 parents 1aa707f + 7928634 commit d8edc4f

File tree

6 files changed

+39
-53
lines changed

6 files changed

+39
-53
lines changed

docs/api/createSlice.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ create.preparedReducer(
240240

241241
Creates an async thunk instead of an action creator.
242242

243-
:::warning Setup
243+
:::caution Setup
244244

245245
To avoid pulling `createAsyncThunk` into the bundle size of `createSlice` by default, some extra setup is required to use `create.asyncThunk`.
246246

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@ type UseQuery = (
251251

252252
type UseQueryOptions = {
253253
pollingInterval?: number
254+
skipPollingIfUnfocused?: boolean
254255
refetchOnReconnect?: boolean
255256
refetchOnFocus?: boolean
256257
skip?: boolean
@@ -445,6 +446,7 @@ type UseQuerySubscriptionOptions = {
445446
skip?: boolean
446447
refetchOnMountOrArgChange?: boolean | number
447448
pollingInterval?: number
449+
skipPollingIfUnfocused?: boolean
448450
refetchOnReconnect?: boolean
449451
refetchOnFocus?: boolean
450452
}
@@ -485,6 +487,7 @@ type UseLazyQuery = (
485487

486488
type UseLazyQueryOptions = {
487489
pollingInterval?: number
490+
skipPollingIfUnfocused?: boolean
488491
refetchOnReconnect?: boolean
489492
refetchOnFocus?: boolean
490493
selectFromResult?: (result: UseQueryStateDefaultResult) => any
@@ -555,6 +558,7 @@ type UseLazyQuerySubscription = (
555558

556559
type UseLazyQuerySubscriptionOptions = {
557560
pollingInterval?: number
561+
skipPollingIfUnfocused?: boolean
558562
refetchOnReconnect?: boolean
559563
refetchOnFocus?: boolean
560564
}

docs/rtk-query/usage/polling.mdx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,21 @@ description: 'RTK Query > Usage > Polling: re-fetching data on a timer'
1414

1515
Polling gives you the ability to have a 'real-time' effect by causing a query to run at a specified interval. To enable polling for a query, pass a `pollingInterval` to the `useQuery` hook or action creator with an interval in milliseconds:
1616

17+
:::tip
18+
Polling additionally has the ability to skip sending requests while the window is out of focus. To enable this behavior, pass `skipPollingIfUnfocused: true` to the `useQuery` hook or action creator.
19+
20+
_Note: `skipPollingIfUnfocused` requires [`setupListeners`](../api/setupListeners.mdx) to have been called._
21+
:::
22+
1723
```tsx no-transpile title="src/Pokemon.tsx" no-transpile
1824
import * as React from 'react'
1925
import { useGetPokemonByNameQuery } from './services/pokemon'
2026

2127
export const Pokemon = ({ name }: { name: string }) => {
22-
// Automatically refetch every 3s
28+
// Automatically refetch every 3s unless the window is out of focus
2329
const { data, status, error, refetch } = useGetPokemonByNameQuery(name, {
2430
pollingInterval: 3000,
31+
skipPollingIfUnfocused: true,
2532
})
2633

2734
return <div>{data}</div>

packages/toolkit/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
"@types/json-stringify-safe": "^5.0.0",
5959
"@types/nanoid": "^2.1.0",
6060
"@types/node": "^20.11.0",
61+
"@types/node-fetch": "^2.6.11",
6162
"@types/query-string": "^6.3.0",
6263
"@types/react": "^18.0.12",
6364
"@types/react-dom": "^18.0.5",
@@ -81,7 +82,7 @@
8182
"jsdom": "^21.0.0",
8283
"json-stringify-safe": "^5.0.1",
8384
"msw": "^2.1.4",
84-
"node-fetch": "^3.3.2",
85+
"node-fetch": "^2.7.0",
8586
"prettier": "^3.2.4",
8687
"query-string": "^7.0.1",
8788
"rimraf": "^3.0.2",

packages/toolkit/src/query/tests/fetchBaseQuery.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,7 +1003,7 @@ describe('fetchBaseQuery', () => {
10031003

10041004
expect(result?.error).toEqual({
10051005
status: 'TIMEOUT_ERROR',
1006-
error: 'AbortError: The operation was aborted.',
1006+
error: expect.stringMatching(/^AbortError:/),
10071007
})
10081008
})
10091009
})
@@ -1121,7 +1121,7 @@ describe('timeout', () => {
11211121

11221122
expect(result?.error).toEqual({
11231123
status: 'TIMEOUT_ERROR',
1124-
error: 'AbortError: The operation was aborted.',
1124+
error: expect.stringMatching(/^AbortError:/),
11251125
})
11261126
})
11271127
})

yarn.lock

Lines changed: 22 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -7256,6 +7256,7 @@ __metadata:
72567256
"@types/json-stringify-safe": ^5.0.0
72577257
"@types/nanoid": ^2.1.0
72587258
"@types/node": ^20.11.0
7259+
"@types/node-fetch": ^2.6.11
72597260
"@types/query-string": ^6.3.0
72607261
"@types/react": ^18.0.12
72617262
"@types/react-dom": ^18.0.5
@@ -7280,7 +7281,7 @@ __metadata:
72807281
jsdom: ^21.0.0
72817282
json-stringify-safe: ^5.0.1
72827283
msw: ^2.1.4
7283-
node-fetch: ^3.3.2
7284+
node-fetch: ^2.7.0
72847285
prettier: ^3.2.4
72857286
query-string: ^7.0.1
72867287
redux: ^5.0.1
@@ -8694,6 +8695,16 @@ __metadata:
86948695
languageName: node
86958696
linkType: hard
86968697

8698+
"@types/node-fetch@npm:^2.6.11":
8699+
version: 2.6.11
8700+
resolution: "@types/node-fetch@npm:2.6.11"
8701+
dependencies:
8702+
"@types/node": "*"
8703+
form-data: ^4.0.0
8704+
checksum: 180e4d44c432839bdf8a25251ef8c47d51e37355ddd78c64695225de8bc5dc2b50b7bb855956d471c026bb84bd7295688a0960085e7158cbbba803053492568b
8705+
languageName: node
8706+
linkType: hard
8707+
86978708
"@types/node@npm:*, @types/node@npm:^17.0.5":
86988709
version: 17.0.45
86998710
resolution: "@types/node@npm:17.0.45"
@@ -13867,13 +13878,6 @@ __metadata:
1386713878
languageName: node
1386813879
linkType: hard
1386913880

13870-
"data-uri-to-buffer@npm:^4.0.0":
13871-
version: 4.0.1
13872-
resolution: "data-uri-to-buffer@npm:4.0.1"
13873-
checksum: 0d0790b67ffec5302f204c2ccca4494f70b4e2d940fea3d36b09f0bb2b8539c2e86690429eb1f1dc4bcc9e4df0644193073e63d9ee48ac9fce79ec1506e4aa4c
13874-
languageName: node
13875-
linkType: hard
13876-
1387713881
"data-urls@npm:^2.0.0":
1387813882
version: 2.0.0
1387913883
resolution: "data-urls@npm:2.0.0"
@@ -16163,16 +16167,6 @@ __metadata:
1616316167
languageName: node
1616416168
linkType: hard
1616516169

16166-
"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4":
16167-
version: 3.2.0
16168-
resolution: "fetch-blob@npm:3.2.0"
16169-
dependencies:
16170-
node-domexception: ^1.0.0
16171-
web-streams-polyfill: ^3.0.3
16172-
checksum: f19bc28a2a0b9626e69fd7cf3a05798706db7f6c7548da657cbf5026a570945f5eeaedff52007ea35c8bcd3d237c58a20bf1543bc568ab2422411d762dd3d5bf
16173-
languageName: node
16174-
linkType: hard
16175-
1617616170
"fflate@npm:^0.7.4":
1617716171
version: 0.7.4
1617816172
resolution: "fflate@npm:0.7.4"
@@ -16536,15 +16530,6 @@ __metadata:
1653616530
languageName: node
1653716531
linkType: hard
1653816532

16539-
"formdata-polyfill@npm:^4.0.10":
16540-
version: 4.0.10
16541-
resolution: "formdata-polyfill@npm:4.0.10"
16542-
dependencies:
16543-
fetch-blob: ^3.1.2
16544-
checksum: 82a34df292afadd82b43d4a740ce387bc08541e0a534358425193017bf9fb3567875dc5f69564984b1da979979b70703aa73dee715a17b6c229752ae736dd9db
16545-
languageName: node
16546-
linkType: hard
16547-
1654816533
"formik@npm:^2.1.5":
1654916534
version: 2.2.9
1655016535
resolution: "formik@npm:2.2.9"
@@ -22132,13 +22117,6 @@ fsevents@^1.2.7:
2213222117
languageName: node
2213322118
linkType: hard
2213422119

22135-
"node-domexception@npm:^1.0.0":
22136-
version: 1.0.0
22137-
resolution: "node-domexception@npm:1.0.0"
22138-
checksum: ee1d37dd2a4eb26a8a92cd6b64dfc29caec72bff5e1ed9aba80c294f57a31ba4895a60fd48347cf17dd6e766da0ae87d75657dfd1f384ebfa60462c2283f5c7f
22139-
languageName: node
22140-
linkType: hard
22141-
2214222120
"node-emoji@npm:^1.10.0":
2214322121
version: 1.10.0
2214422122
resolution: "node-emoji@npm:1.10.0"
@@ -22204,14 +22182,17 @@ fsevents@^1.2.7:
2220422182
languageName: node
2220522183
linkType: hard
2220622184

22207-
"node-fetch@npm:^3.3.2":
22208-
version: 3.3.2
22209-
resolution: "node-fetch@npm:3.3.2"
22185+
"node-fetch@npm:^2.7.0":
22186+
version: 2.7.0
22187+
resolution: "node-fetch@npm:2.7.0"
2221022188
dependencies:
22211-
data-uri-to-buffer: ^4.0.0
22212-
fetch-blob: ^3.1.4
22213-
formdata-polyfill: ^4.0.10
22214-
checksum: 06a04095a2ddf05b0830a0d5302699704d59bda3102894ea64c7b9d4c865ecdff2d90fd042df7f5bc40337266961cb6183dcc808ea4f3000d024f422b462da92
22189+
whatwg-url: ^5.0.0
22190+
peerDependencies:
22191+
encoding: ^0.1.0
22192+
peerDependenciesMeta:
22193+
encoding:
22194+
optional: true
22195+
checksum: d76d2f5edb451a3f05b15115ec89fc6be39de37c6089f1b6368df03b91e1633fd379a7e01b7ab05089a25034b2023d959b47e59759cb38d88341b2459e89d6e5
2221522196
languageName: node
2221622197
linkType: hard
2221722198

@@ -30905,13 +30886,6 @@ fsevents@^1.2.7:
3090530886
languageName: node
3090630887
linkType: hard
3090730888

30908-
"web-streams-polyfill@npm:^3.0.3":
30909-
version: 3.3.2
30910-
resolution: "web-streams-polyfill@npm:3.3.2"
30911-
checksum: 0292f4113c1bda40d8e8ecebee39eb14cc2e2e560a65a6867980e394537a2645130e2c73f5ef6e641fd3697d2f71720ccf659aebaf69a9d5a773f653a0fdf39d
30912-
languageName: node
30913-
linkType: hard
30914-
3091530889
"webidl-conversions@npm:^3.0.0":
3091630890
version: 3.0.1
3091730891
resolution: "webidl-conversions@npm:3.0.1"

0 commit comments

Comments
 (0)