Skip to content

Commit 797c535

Browse files
committed
copy(use-id): final review pass
1 parent 44d9aa8 commit 797c535

File tree

1 file changed

+28
-29
lines changed

1 file changed

+28
-29
lines changed

src/content/reference/react/useId.md

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ title: useId
44

55
<Intro>
66

7-
`useId` est un Hook React permettant de générer des identifiants uniques qui peuvent être passés comme attributs d'accessibilité.
7+
`useId` est un Hook React permettant de générer des identifiants uniques qui peuvent être passés comme attributs daccessibilité.
88

99
```js
1010
const id = useId()
@@ -30,35 +30,35 @@ function PasswordField() {
3030
// ...
3131
```
3232
33-
[Voir d'autres exemples ci-dessous.](#usage)
33+
[Voir dautres exemples ci-dessous.](#usage)
3434
3535
#### Paramètres {/*parameters*/}
3636
3737
`useId` ne prend aucun paramètre.
3838
3939
#### Valeur renvoyée {/*returns*/}
4040
41-
`useId` renvoie un identifiant textuel unique associé à cet appel `useId` particulier dans ce composant spécifique.
41+
`useId` renvoie un identifiant textuel unique, associé à cet appel `useId` précis au sein de ce composant.
4242
4343
#### Limitations {/*caveats*/}
4444
45-
* `useId` est un Hook, vous pouvez donc uniquement l'appeler **à la racine de votre composant** ou de vos propres Hooks. Vous ne pouvez pas l'appeler à l'intérieur de boucles ou de conditions. Si nécessaire, extrayez un nouveau composant et déplacez l'état dans celui-ci.
45+
* `useId` est un Hook, vous pouvez donc uniquement lappeler **à la racine de votre composant** ou de vos propres Hooks. Vous ne pouvez pas lappeler à lintérieur de boucles ou de conditions. Si nécessaire, extrayez un nouveau composant et déplacez l'état dans celui-ci.
4646
47-
* `useId` ne doit pas être utilisé pour générer des clés dans une liste. [Les clés devraient être basées sur vos données.](/learn/rendering-lists#where-to-get-your-key)
47+
* `useId` ne doit pas être utilisé pour générer des clés dans une liste. [Les clés devraient toujours être basées sur vos données.](/learn/rendering-lists#where-to-get-your-key)
4848
4949
---
5050
5151
## Utilisation {/*usage*/}
5252
5353
<Pitfall>
5454
55-
**N'appelez pas `useId` pour générer des clés dans une liste.** [Les clés devraient être basées sur vos données.](/learn/rendering-lists#where-to-get-your-key)
55+
**N'appelez pas `useId` pour générer des clés dans une liste.** [Les clés devraient toujours être basées sur vos données.](/learn/rendering-lists#where-to-get-your-key)
5656
5757
</Pitfall>
5858
59-
### Générer des identifiants uniques pour les attributs d'accessibilité {/*generating-unique-ids-for-accessibility-attributes*/}
59+
### Générer des identifiants uniques pour les attributs daccessibilité {/*generating-unique-ids-for-accessibility-attributes*/}
6060
61-
Appelez `useId` à la racine de votre composant pour générer un identifiant unique :
61+
Appelez `useId` à la racine de votre composant pour générer un identifiant unique :
6262
6363
```js [[1, 4, "passwordHintId"]]
6464
import { useId } from 'react';
@@ -68,7 +68,7 @@ function PasswordField() {
6868
// ...
6969
```
7070
71-
Vous pouvez ensuite transmettre <CodeStep step={1}>l'identifiant généré</CodeStep> à différents attributs :
71+
Vous pouvez ensuite transmettre <CodeStep step={1}>lidentifiant généré</CodeStep> à différents attributs :
7272
7373
```js [[1, 2, "passwordHintId"], [1, 3, "passwordHintId"]]
7474
<>
@@ -77,15 +77,15 @@ Vous pouvez ensuite transmettre <CodeStep step={1}>l'identifiant généré</Code
7777
</>
7878
```
7979
80-
**Prenons un exemple pour mieux saisir l'utilité de cette méthode.**
80+
**Prenons un exemple pour mieux saisir lutilité de cette méthode.**
8181
82-
[Les attributs d'accessibilité HTML](https://developer.mozilla.org/fr/docs/Web/Accessibility/ARIA) tels que [`aria-describedby`](https://developer.mozilla.org/fr/docs/Web/Accessibility/ARIA/Attributes/aria-describedby) vous permettent de spécifier que deux balises sont liées l'une à l'autre. Par exemple, vous pouvez spécifier qu'un élément (tel qu'un champ de saisie) est décrit par un autre élément (tel qu'un paragraphe).
82+
[Les attributs daccessibilité HTML](https://developer.mozilla.org/fr/docs/Web/Accessibility/ARIA) tels que [`aria-describedby`](https://developer.mozilla.org/fr/docs/Web/Accessibility/ARIA/Attributes/aria-describedby) vous permettent de spécifier que deux balises sont liées lune à lautre. Par exemple, vous pouvez spécifier qu'un élément (tel qu'un champ de saisie) est décrit par un autre élément (tel qu'un paragraphe).
8383
84-
En HTML classique, vous l'écririez comme suit :
84+
En HTML classique, vous l'écririez comme suit :
8585
8686
```html {5,8}
8787
<label>
88-
Mot de passe :
88+
Mot de passe :
8989
<input
9090
type="password"
9191
aria-describedby="password-hint"
@@ -96,7 +96,7 @@ En HTML classique, vous l'écririez comme suit :
9696
</p>
9797
```
9898
99-
Cependant, définir des ID en dur comme ça constitue une mauvaise pratique en React. Un composant pourrait être présent plusieurs fois sur la page--mais les ID doivent être uniques ! Au lieu d'utiliser un identifiant fixe, générez un identifiant unique avec `useId` :
99+
Cependant, définir des ID en dur comme ça constitue une mauvaise pratique en React. Un composant pourrait être présent plusieurs fois sur la page--mais les ID doivent être uniques ! Au lieu dutiliser un identifiant fixe, générez un identifiant unique avec `useId` :
100100
101101
```js {4,11,14}
102102
import { useId } from 'react';
@@ -106,7 +106,7 @@ function PasswordField() {
106106
return (
107107
<>
108108
<label>
109-
Mot de passe :
109+
Mot de passe :
110110
<input
111111
type="password"
112112
aria-describedby={passwordHintId}
@@ -120,7 +120,7 @@ function PasswordField() {
120120
}
121121
```
122122
123-
Désormais, même si `PasswordField` apparaît plusieurs fois à l'écran, les identifiants générés ne seront pas en conflit.
123+
Désormais, même si `PasswordField` est utilisé plusieurs fois à l'écran, les identifiants générés ne rentreront pas en conflit.
124124
125125
<Sandpack>
126126
@@ -132,7 +132,7 @@ function PasswordField() {
132132
return (
133133
<>
134134
<label>
135-
Mot de passe :
135+
Mot de passe :
136136
<input
137137
type="password"
138138
aria-describedby={passwordHintId}
@@ -163,7 +163,7 @@ input { margin: 5px; }
163163
164164
</Sandpack>
165165
166-
[Regardez cette vidéo](https://www.youtube.com/watch?v=0dNzNcuEuOo) pour comprendre en quoi ça améliore l'expérience des utilisateurs de technologies d'assistance.
166+
[Regardez cette vidéo](https://www.youtube.com/watch?v=0dNzNcuEuOo) pour comprendre en quoi ça améliore lexpérience des utilisateurs de technologies dassistance.
167167
168168
<Pitfall>
169169
@@ -173,23 +173,23 @@ Avec [le rendu côté serveur](/reference/react-dom/server), **`useId` requiert
173173
174174
<DeepDive>
175175
176-
#### Pourquoi utiliser useId plutôt qu'un compteur incrémental ? {/*why-is-useid-better-than-an-incrementing-counter*/}
176+
#### Pourquoi utiliser useId plutôt qu'un compteur incrémental ? {/*why-is-useid-better-than-an-incrementing-counter*/}
177177
178-
Vous vous demandez peut-être pourquoi il est préférable d’utiliser `useId` plutôt que d'incrémenter une variable globale, du genre `nextId++`.
178+
Vous vous demandez peut-être pourquoi il est préférable d’utiliser `useId` plutôt que dincrémenter une variable globale, du genre `nextId++`.
179179
180-
Le principal avantage de `useId` tient à ce que React garantit son bon fonctionnement dans [le rendu serveur](/reference/react-dom/server). Lors du rendu serveur, vos composants produisent du HTML. Plus tard, sur le client, le processus d'[hydratation](/reference/react-dom/client/hydrateRoot) attache vos gestionnaires d'événements au HTML généré. Pour que l'hydratation fonctionne, le résultat du code client doit correspondre au HTML du serveur.
180+
Le principal avantage de `useId` tient à ce que React garantit son bon fonctionnement dans [le rendu serveur](/reference/react-dom/server). Lors du rendu serveur, vos composants produisent du HTML. Plus tard, sur le client, le processus d'[hydratation](/reference/react-dom/client/hydrateRoot) attache vos gestionnaires d'événements au HTML généré. Pour que lhydratation fonctionne, le résultat du code client doit correspondre au HTML du serveur.
181181
182-
Il est très difficile de garantir ça avec un compteur incrémental, car l'ordre dans lequel les composants côté client sont hydratés peut ne pas correspondre à l'ordre dans lequel le code HTML du serveur est émis. En appelant `useId`, vous vous assurez que l'hydratation fonctionnera et que la sortie correspondra entre le serveur et le client.
182+
Il est très difficile de garantir ça avec un compteur incrémental, car lordre dans lequel les composants côté client sont hydratés peut ne pas correspondre à lordre dans lequel le code HTML du serveur est émis. En appelant `useId`, vous vous assurez que l'hydratation fonctionnera et que la sortie correspondra entre le serveur et le client.
183183
184-
Dans React, `useId` est généré à partir du « chemin de parents » du composant appelant. C'est pourquoi, si l'arbre du client et celui du serveur sont identiques, ce « chemin » correspondra quel que soit l'ordre de rendu.
184+
Dans React, `useId` est généré à partir du « chemin de parents » du composant appelant. Cest pourquoi, si larbre du client et celui du serveur sont identiques, ce « chemin » correspondra quel que soit lordre de rendu.
185185
186186
</DeepDive>
187187
188188
---
189189
190190
### Générer des identifiants pour plusieurs éléments liés {/*generating-ids-for-several-related-elements*/}
191191
192-
Si vous devez attribuer des identifiants à plusieurs éléments liés, vous pouvez appeler `useId` pour leur attribuer un préfixe commun :
192+
Si vous devez attribuer des identifiants à plusieurs éléments liés, vous pouvez appeler `useId` pour leur attribuer un préfixe commun :
193193
194194
<Sandpack>
195195
@@ -200,10 +200,10 @@ export default function Form() {
200200
const id = useId();
201201
return (
202202
<form>
203-
<label htmlFor={id + '-firstName'}>Prénom :</label>
203+
<label htmlFor={id + '-firstName'}>Prénom :</label>
204204
<input id={id + '-firstName'} type="text" />
205205
<hr />
206-
<label htmlFor={id + '-lastName'}>Nom de famille :</label>
206+
<label htmlFor={id + '-lastName'}>Nom de famille :</label>
207207
<input id={id + '-lastName'} type="text" />
208208
</form>
209209
);
@@ -242,11 +242,11 @@ import { useId } from 'react';
242242

243243
function PasswordField() {
244244
const passwordHintId = useId();
245-
console.log('Identifiant généré :', passwordHintId)
245+
console.log('Identifiant généré :', passwordHintId)
246246
return (
247247
<>
248248
<label>
249-
Mot de passe :
249+
Mot de passe :
250250
<input
251251
type="password"
252252
aria-describedby={passwordHintId}
@@ -302,4 +302,3 @@ input { margin: 5px; }
302302
```
303303
304304
</Sandpack>
305-

0 commit comments

Comments
 (0)