Skip to content

Commit ae1018a

Browse files
committed
copy(useSyncExternalStore): final review pass
1 parent 2b4742b commit ae1018a

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

src/content/reference/react/useSyncExternalStore.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,24 @@ function TodosApp() {
3232
}
3333
```
3434
35-
Il renvoie un instantané de cette donnée issue de la source. Vous devrez passer deux fonctions comme arguments :
35+
Il renvoie un instantané de cette donnée issue de la source. Vous aurez besoin de passer deux fonctions comme arguments :
3636
37-
1. La fonction `subscribe` est censé s'abonner à la source et renvoyer une fonction de désabonnement.
38-
2. La fonction `getSnapshot` est censée lire un instantanée de la donnée souhaitée au sein de la source.
37+
1. La fonction `subscribe` est censée s'abonner à la source et renvoyer une fonction de désabonnement.
38+
2. La fonction `getSnapshot` est censée lire un instantané de la donnée souhaitée au sein de la source.
3939
4040
[Voir d'autres exemples ci-dessous](#usage).
4141
4242
#### Paramètres {/*parameters*/}
4343
44-
* `subscribe` : une fonction acceptant un unique argument `callback` argument qui s'abonne à la source de données. Lorsque la source évolue, elle est censée invoquer le `callback` fourni. Ça permettra au composant de faire un nouveau rendu. La fonction `subscribe` est censée renvoyer une fonction qui procède au désabonnement associé.
44+
* `subscribe` : une fonction acceptant un unique argument `callback` qui s'abonne à la source de données. Lorsque la source évolue, elle est censée invoquer `callback`. Ça permettra au composant de refaire un rendu. La fonction `subscribe` est censée renvoyer une fonction qui procède au désabonnement associé.
4545
46-
* `getSnapshot` : une fonction qui renvoie un instantané de la donnée requise par le composant au sein de la source. Tant que la source n'évolue pas, des appels répétés à `getSnapshot` sont censés renvoyés la même valeur. Si la source évolue et que la valeur renvoyée diffère soudain (en comparant à l'aide de [`Object.is`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/is)), React refait un rendu du composant.
46+
* `getSnapshot` : une fonction qui renvoie un instantané de la donnée requise par le composant au sein de la source. Tant que la source n'évolue pas, des appels répétés à `getSnapshot` sont censés renvoyer la même valeur. Si la source évolue et que la valeur renvoyée diffère soudain (en comparant à l'aide de [`Object.is`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/is)), React refait un rendu du composant.
4747
48-
* `getServerSnapshot` **optionnelle** : une fonction qui renvoie un premier instantané de la donnée au sein de la source. Elle ne sera utilisée que pour le rendu côté serveur, et pendant la phase d'hydratation du contenu fourni par le serveur une fois côté client. L'instantané serveur doit être identique qu'il soit exécuté côté serveur ou côté client, il est généralement séréalisé et passé du serveur au client. Si vous omettez cet argument, toute tentative de rendu côté serveur de votre composant lèvera une erreur.
48+
* `getServerSnapshot` **optionnelle** : une fonction qui renvoie un premier instantané de la donnée au sein de la source. Elle ne sera utilisée que pour le rendu côté serveur, et pendant la phase d'hydratation du contenu fourni par le serveur une fois côté client. L'instantané serveur doit être identique qu'il soit exécuté côté serveur ou côté client : il est donc généralement sérialisé et passé du serveur au client. Si vous omettez cet argument, toute tentative de rendu côté serveur de votre composant lèvera une erreur.
4949
5050
#### Valeur renvoyée {/*returns*/}
5151
52-
L'instantané actuel issu de la soruce, que vous pouvez utiliser pour votre logique de rendu.
52+
L'instantané actuel de la valeur issue de la source, que vous pouvez utiliser pour votre logique de rendu.
5353
5454
#### Limitations {/*caveats*/}
5555
@@ -80,10 +80,10 @@ function TodosApp() {
8080
}
8181
```
8282
83-
Elle renvoie un <CodeStep step={3}>instantané</CodeStep> de la données issue de la source. Vous devrez passez deux fonctions comme arguments :
83+
Elle renvoie un <CodeStep step={3}>instantané</CodeStep> de la donnée issue de la source. Vous devrez lui passer deux arguments fonctions :
8484
85-
1. La fonction <CodeStep step={1}>`subscribe`</CodeStep> est censé s'abonner à la source et renvoyer une fonction de désabonnement.
86-
2. La fonction <CodeStep step={2}>`getSnapshot`</CodeStep> est censée lire un instantanée de la donnée souhaitée au sein de la source.
85+
1. La fonction <CodeStep step={1}>`subscribe`</CodeStep> est censée s'abonner à la source et renvoyer une fonction de désabonnement.
86+
2. La fonction <CodeStep step={2}>`getSnapshot`</CodeStep> est censée lire un instantané de la donnée souhaitée au sein de la source.
8787
8888
React utilisera ces fonctions pour garder votre composant abonné à la source et refaire un rendu lorsque la donnée change.
8989
@@ -115,9 +115,9 @@ export default function TodosApp() {
115115
// Voici un exemple de source de données tierce
116116
// que vous pourriez avoir besoin d'intégrer dans React.
117117

118-
// Si votre appli est intégralement construite avec React,
119-
// nous vous recommandons de plutôt utiliser l'état local
120-
// React pour ça.
118+
// Si votre appli est intégralement construite avec
119+
// React, nous vous recommandons de plutôt utiliser
120+
// l'état local React pour ça.
121121

122122
let nextId = 0;
123123
let todos = [{ id: nextId++, text: 'Tâche #1' }];
@@ -150,7 +150,7 @@ function emitChange() {
150150
151151
<Note>
152152
153-
Autant que possible, nous vous recommandons de plutôt utiliser l'état local React avec [`useState`](/reference/react/useState) et [`useReducer`](/reference/react/useReducer). L'API `useSyncExternalStore` est surtout utile pour vous intégrer avec du code existant non React.
153+
Autant que possible, nous vous recommandons de plutôt utiliser l'état local React avec [`useState`](/reference/react/useState) et [`useReducer`](/reference/react/useReducer). L'API `useSyncExternalStore` est surtout utile pour vous intégrer avec du code existant non basé sur React.
154154
155155
</Note>
156156
@@ -160,7 +160,7 @@ Autant que possible, nous vous recommandons de plutôt utiliser l'état local Re
160160
161161
`useSyncExternalStore` est également bien utile pour vous abonner à une valeur exposée par le navigateur et susceptible de changer au fil du temps. Supposez par exemple que vous souhaitiez que votre composant affiche l'état actif ou non de la connexion réseau. Le navigateur expose cette information au travers d'une propriété [`navigator.onLine`](https://developer.mozilla.org/docs/Web/API/Navigator/onLine).
162162
163-
Cette valeur peut changer sans que React soit au courant, vous devriez donc la lire avec `useSyncExternalStore`.
163+
Cette valeur peut changer sans que React le sache, vous devriez donc la lire avec `useSyncExternalStore`.
164164
165165
```js
166166
import { useSyncExternalStore } from 'react';
@@ -179,7 +179,7 @@ function getSnapshot() {
179179
}
180180
```
181181
182-
Vous devez ensuite implémenter la fonction `subscribe`. Il se trouve que lorsque `navigation.onLine` change, le navigateur déclenche soit l'événement [`online`](https://developer.mozilla.org/docs/Web/API/Window/online_event) soit l'événement [`offline`](https://developer.mozilla.org/docs/Web/API/Window/offline_event) sur l'objet `window`. Vous devez abonner l'argument `callback` à ces événements, et renvoyer une fonction qui fait le désabonnement correspondant :
182+
Vous devez ensuite implémenter la fonction `subscribe`. Il se trouve que lorsque `navigation.onLine` change, le navigateur déclenche l'événement [`online`](https://developer.mozilla.org/docs/Web/API/Window/online_event) ou [`offline`](https://developer.mozilla.org/docs/Web/API/Window/offline_event) sur l'objet `window`. Vous devez abonner l'argument `callback` à ces événements, et renvoyer une fonction qui fait le désabonnement correspondant :
183183
184184
```js
185185
function subscribe(callback) {
@@ -244,7 +244,7 @@ function subscribe(callback) {
244244
}
245245
```
246246
247-
Avec ça, plusieurs composants distincts peuvent utiliser `useOnlineStatus` sans répéter l'implémentation sous-jacente :
247+
Grâce à ça, plusieurs composants distincts peuvent utiliser `useOnlineStatus` sans avoir à répéter l'implémentation sous-jacente :
248248
249249
<Sandpack>
250250
@@ -310,10 +310,10 @@ function subscribe(callback) {
310310
311311
Si votre appli React utilise le [rendu côté serveur](/reference/react-dom/server), vos composants React seront aussi exécutés hors d'un environnement navigateur pour générer le HTML initial. Ça complexifie un peu la connexion à la source de données extérieure :
312312
313-
* Si vous vous connectez à une API strictement navigateur, ça ne marchera pas car elle n'existera pas côté serveur.
313+
* Si vous vous connectez à une API strictement navigateur, ça ne marchera pas car elle n'existera pas, par définition, côté serveur.
314314
* Si vous vous connectez à une source de données tierce, vous aurez besoin que ses données correspondent côté serveur et côté client.
315315
316-
Pour résoudre ces questions, passez une fonction `getServerSnapshot` comme troisième argument à `useSyncExternalStore` :
316+
Pour pouvoir résoudre ces problématiques, passez une fonction `getServerSnapshot` comme troisième argument à `useSyncExternalStore` :
317317
318318
```js {4,12-14}
319319
import { useSyncExternalStore } from 'react';
@@ -336,16 +336,16 @@ function subscribe(callback) {
336336
}
337337
```
338338
339-
La fonction `getServerSnapshot` est similaire à `getSnapshot`, mais elle n'est exécutée que dans deux cas de figure :
339+
La fonction `getServerSnapshot` est similaire à `getSnapshot`, mais elle n'est exécutée que dans deux cas :
340340
341341
* Côté serveur pour générer le HTML.
342-
* Côté client lors de [l'hydratation](/reference/react-dom/client/hydrateRoot), c'est-à-dire lorsque React prend le HTML renvoyé par le serveur et le rend interactif.
342+
* Côté client lors de [l'hydratation](/reference/react-dom/client/hydrateRoot), c'est-à-dire lorsque React reprend la main sur le HTML renvoyé par le serveur pour le rendre interactif.
343343
344344
Ça vous permet de fournir une valeur initiale de l'instantané que vous pourrez utiliser avant que l'appli devienne interactive. Si vous n'avez pas de valeur initiale pertinente à fournir lors du rendu côté serveur, omettez cet argument pour [forcer le rendu côté client](/reference/react/Suspense#providing-a-fallback-for-server-errors-and-server-only-content).
345345
346346
<Note>
347347
348-
Assurez-vous que `getServerSnapshot` renvoie exactement la même valeur lors du rendu client initial que côté serveur. Par exemple, si `getServerSnapshot` renvoie un contenu prérempli del a source de données côté serveur, vous devez transférer ce contenu au client. Une façon d'y parvenir consiste à émettre une balise `<script>` pendant le rendu côté serveur qui définit une globale du genre `window.MY_STORE_DATA`, puis de lire cette globale côté client au sein de `getServerSnapshot`. Votre source de donneés extérieure documente probablement comment faire ça.
348+
Assurez-vous que `getServerSnapshot` renvoie exactement la même valeur lors du rendu client initial et lors du rendu côté serveur. Par exemple, si `getServerSnapshot` renvoie un contenu prérempli de la source de données côté serveur, vous devez transférer ce contenu au client. Une façon d'y parvenir consiste à émettre une balise `<script>` pendant le rendu côté serveur qui définit une globale du genre `window.MY_STORE_DATA`, puis de lire cette globale côté client au sein de `getServerSnapshot`. Votre source de donneés extérieure documente probablement comment faire ça.
349349
350350
</Note>
351351
@@ -357,7 +357,7 @@ Assurez-vous que `getServerSnapshot` renvoie exactement la même valeur lors du
357357
358358
*(« Le résultat de `getSnapshot` devrait être mis en cache », NdT.)*
359359
360-
Cette erreur signifie que la fonction `getSnapshot` renvoie un nouvel objet à chaque fois qu'on l'appelle, par exemple :
360+
Cette erreur signifie que la fonction `getSnapshot` renvoie un nouvel objet à chaque fois qu'on l'appelle :
361361
362362
```js {2-5}
363363
function getSnapshot() {
@@ -414,7 +414,7 @@ function subscribe() {
414414
}
415415
```
416416
417-
Vous pouvez aussi enrober `subscribe` dans [`useCallback`](/reference/react/useCallback) pour ne vous réabonner que lorsqu'une dépendance change :
417+
Vous pouvez aussi enrober `subscribe` dans un appel à [`useCallback`](/reference/react/useCallback) pour ne vous réabonner que lorsqu'une dépendance change :
418418
419419
```js {4-8}
420420
function ChatIndicator({ userId }) {

0 commit comments

Comments
 (0)