Skip to content

Commit 19a3bc3

Browse files
authored
Merge pull request #604 from reactjs/sync-e85b71de
Sync with react.dev @ e85b71d
2 parents 61b1820 + 0bce73c commit 19a3bc3

8 files changed

Lines changed: 33 additions & 23 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"next-remote-watch": "^1.0.0",
3737
"parse-numeric-range": "^1.2.0",
3838
"react": "^0.0.0-experimental-16d053d59-20230506",
39-
"react-collapsed": "npm:@gaearon/react-collapsed@3.1.0-forked.1",
39+
"react-collapsed": "4.0.4",
4040
"react-dom": "^0.0.0-experimental-16d053d59-20230506",
4141
"remark-frontmatter": "^4.0.1",
4242
"remark-gfm": "^3.0.1"

src/components/Layout/Sidebar/SidebarRouteTree.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {useRef, useLayoutEffect, Fragment} from 'react';
77
import cn from 'classnames';
88
import {useRouter} from 'next/router';
99
import {SidebarLink} from './SidebarLink';
10-
import useCollapse from 'react-collapsed';
10+
import {useCollapse} from 'react-collapsed';
1111
import usePendingRoute from 'hooks/usePendingRoute';
1212
import type {RouteItem} from 'components/Layout/getRouteMeta';
1313

src/components/Seo.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const deployedTranslations = [
2222
'zh-hans',
2323
'es',
2424
'fr',
25+
'ja',
2526
// We'll add more languages when they have enough content.
2627
// Please DO NOT edit this list without a discussion in the reactjs/react.dev repo.
2728
// It must be the same between all translations.

src/content/reference/react/experimental_taintObjectReference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ experimental_taintObjectReference(
6868

6969
<Pitfall>
7070

71-
**Ne comptez pas sur le ternissement pour garantir la sécurité.** Ternir un objet n'empêche pas la fuite de toute donnée dérivée imaginable. Un clone de l'objet terni créera par exemple un objet intact. L'utilisation de données d'un objet terni (ex. `{secret: taintedObj.secret}`) crée une nouvelle valeur, ou un nouvel objet, qui ne sera pas terni·e. Le ternissement est une couche de protection, mais une appli sécurisée aura plusieurs couches de protection complémentaires, des API soigneusement conçues et des mécanismes d'isolation en place.
71+
**Ne comptez pas sur le ternissement pour garantir la sécurité.** Ternir un objet n'empêche pas la fuite de toute donnée dérivée imaginable. Un clone de l'objet terni créera par exemple un objet intact. L'utilisation de données d'un objet terni (ex. `{secret: taintedObj.secret}`) crée une nouvelle valeur, ou un nouvel objet, qui ne sera pas terni·e. Le ternissement est une couche de protection ; une appli sécurisée aura plusieurs couches de protection complémentaires, des API soigneusement conçues et des mécanismes d'isolation en place.
7272

7373
</Pitfall>
7474

src/content/reference/react/experimental_taintUniqueValue.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ Dans le code ci-dessus, la constante`password` est ternie. Puis `password` sert
128128

129129
On obtiendrait le même résultat avec d'autres façons de dériver de nouvelles valeurs à partir de valeurs ternies, telles que la concaténation de chaîne, leur encodage en Base 64 ou l'extraction d'une portion de la chaîne.
130130

131-
Le ternissement ne vous protège que contre les bévues simples lorsqu'une valeur sensible est explicitement passée à un Composant Client. Des appels erronés de `taintUniqueValue`, comme le fait de recourir à un stockage global hors de React, sans l'objet de durée de vie associée, peuvent entraîner la perte du ternissement de la valeur. Le ternissement est une couche de protection, mais une appli sécurisée aura plusieurs couches de protection complémentaires, des API soigneusement conçues et des mécanismes d'isolation en place.
131+
Le ternissement ne vous protège que contre les bévues simples lorsqu'une valeur sensible est explicitement passée à un Composant Client. Des appels erronés de `taintUniqueValue`, comme le fait de recourir à un stockage global hors de React, sans l'objet de durée de vie associée, peuvent entraîner la perte du ternissement de la valeur. Le ternissement est une couche de protection ; une appli sécurisée aura plusieurs couches de protection complémentaires, des API soigneusement conçues et des mécanismes d'isolation en place.
132132

133133
</Pitfall>
134134

src/content/reference/react/useSyncExternalStore.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,26 @@ L'instantané actuel de la valeur issue de la source, que vous pouvez utiliser p
5757
5858
* Si une fonction `subscribe` différente est passée lors d'un nouveau rendu, React se réabonnera à la source de données en utilisant cette nouvelle fonction `subscribe`. Vous pouvez éviter ça en déclarant `subscribe` hors du composant.
5959
60+
* Si la source est modifiée au sein d'une [transition non bloquante](/reference/react/useTransition), React se rabattra sur une application bloquante de la mise à jour. Plus spécifiquement, React rappellera `getSnapshot` juste avant d'appliquer les modifications au DOM. Si la valeur renvoyée diffère de celle produite par le premier appel, React redémarrera le processus de transition de zéro, en l'appliquant cette fois en tant que mise à jour bloquante, pour garantir que chaque composant à l'écran reflète bien la même version de la source.
61+
62+
* Nous vous déconseillons de _suspendre_ un rendu basé sur une valeur de la source renvoyée par `useSyncExternalStore`. Ça vient de ce que les mutations de la source ne peuvent pas être [marquées comme des transitions non bloquantes](/reference/react/useTransition), et déclencheront donc le plus proche [affichage de secours `Suspense`](/reference/react/Suspense), remplaçant ainsi du contenu déjà affiché avec un écran montrant un indicateur de chargement, ce qui est généralement indésirable en termes d'UX.
63+
64+
À titre d'exemple, le code suivant est déconseillé :
65+
66+
```js
67+
const LazyProductDetailPage = lazy(() => import('./ProductDetailPage.js'));
68+
69+
function ShoppingApp() {
70+
const selectedProductId = useSyncExternalStore(...);
71+
72+
// ❌ Appel de `use` avec une promesse dépendant de `selectedProductId`
73+
const data = use(fetchItem(selectedProductId))
74+
75+
// ❌ Rendu conditionnel d'un composant chargé à la demande sur base de `selectedProductId`
76+
return selectedProductId != null ? <LazyProductDetailPage /> : <FeaturedProducts />;
77+
}
78+
```
79+
6080
---
6181
6282
## Utilisation {/*usage*/}

src/sidebarReference.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,13 @@
130130
},
131131
{
132132
"title": "experimental_taintObjectReference",
133-
"path": "/reference/react/experimental_taintObjectReference"
133+
"path": "/reference/react/experimental_taintObjectReference",
134+
"canary": true
134135
},
135136
{
136137
"title": "experimental_taintUniqueValue",
137-
"path": "/reference/react/experimental_taintUniqueValue"
138+
"path": "/reference/react/experimental_taintUniqueValue",
139+
"canary": true
138140
}
139141
]
140142
},

yarn.lock

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4797,11 +4797,6 @@ path-type@^4.0.0:
47974797
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
47984798
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
47994799

4800-
performance-now@^2.1.0:
4801-
version "2.1.0"
4802-
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
4803-
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
4804-
48054800
periscopic@^3.0.0:
48064801
version "3.0.4"
48074802
resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.0.4.tgz#b3fbed0d1bc844976b977173ca2cd4a0ef4fa8d1"
@@ -5284,13 +5279,6 @@ queue-microtask@^1.2.2:
52845279
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
52855280
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
52865281

5287-
raf@^3.4.1:
5288-
version "3.4.1"
5289-
resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
5290-
integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
5291-
dependencies:
5292-
performance-now "^2.1.0"
5293-
52945282
range-parser@~1.2.1:
52955283
version "1.2.1"
52965284
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
@@ -5306,12 +5294,11 @@ raw-body@2.5.1:
53065294
iconv-lite "0.4.24"
53075295
unpipe "1.0.0"
53085296

5309-
"react-collapsed@npm:@gaearon/react-collapsed@3.1.0-forked.1":
5310-
version "3.1.0-forked.1"
5311-
resolved "https://registry.yarnpkg.com/@gaearon/react-collapsed/-/react-collapsed-3.1.0-forked.1.tgz#b287b81fc2af2971d7d7b523dc40b6cf116822ac"
5312-
integrity sha512-QkW55Upl4eeOtnDMOxasafDtDwaF+DpYKvHq8KZoNz9P477iUH8Ik1YFYuqtI7UA8mHm1/z66LD678dZCXwEEg==
5297+
react-collapsed@4.0.4:
5298+
version "4.0.4"
5299+
resolved "https://registry.yarnpkg.com/react-collapsed/-/react-collapsed-4.0.4.tgz#4c6bce3a15286d43e95b6730ad70ec387a54caa9"
5300+
integrity sha512-8avvmnQxDYTgGZYVP9+3Z7doomxVEBoCkukpTmUHEIrAYvELZ5jNNfYCt/hCpHB6GmQbzZoDmnDupjsnQVgcCQ==
53135301
dependencies:
5314-
raf "^3.4.1"
53155302
tiny-warning "^1.0.3"
53165303

53175304
react-devtools-inline@4.4.0:

0 commit comments

Comments
 (0)