Skip to content

Commit c89f894

Browse files
authored
Final tweaks
1 parent 7524eb8 commit c89f894

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

content/docs/hooks-rules.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ prev: hooks-effect.html
88

99
Les *Hooks* sont arrivés avec React 16.8. Ils vous permettent de bénéficier d’un état local et d'autres fonctionnalités de React sans avoir à écrire une classe.
1010

11-
Les Hooks sont des fonctions JavaScript, mais vous devez suivre deux règles lorsque vous les utilisez. Nous mettons à votre disposition un [plugin de *linter*](https://www.npmjs.com/package/eslint-plugin-react-hooks) pour vérifier ces règles automatiquement :
11+
Les Hooks sont des fonctions JavaScript, mais vous devez suivre deux règles lorsque vous les utilisez. Nous mettons à votre disposition un [plugin de *linter*](https://www.npmjs.com/package/eslint-plugin-react-hooks) pour vérifier ces règles automatiquement :
1212

1313
### Appelez les Hooks uniquement au niveau racine {#only-call-hooks-at-the-top-level}
1414

15-
**N'appelez pas de Hooks à l'intérieur de boucles, de code conditionnel ou de fonctions imbriquées.** Au lieu de ça, utilisez seulement les Hooks au niveau racine de votre fonction React. En suivant cette règle, vous garantissez que les Hooks sont appelés dans le même ordre à chaque fois affichage du composant. C'est ce qui permet à React de garantir le bon état des Hooks entre plusieurs appels à `useState` et `useEffect`. (Si vous êtes curieux·se, nous expliquerons ça en détail [ci-dessous](#explanation).)
15+
**N'appelez pas de Hooks à l'intérieur de boucles, de code conditionnel ou de fonctions imbriquées.** Au lieu de ça, utilisez seulement les Hooks au niveau racine de votre fonction React. En suivant cette règle, vous garantissez que les Hooks sont appelés dans le même ordre à chaque affichage du composant. C'est ce qui permet à React de garantir le bon état des Hooks entre plusieurs appels à `useState` et `useEffect`. (Si vous êtes curieux·se, nous expliquerons ça en détail [plus bas](#explanation).)
1616

1717
### Appelez les Hooks uniquement depuis des fonctions React {#only-call-hooks-from-react-functions}
1818

19-
**N'appelez pas les Hooks depuis des fonctions JavaScript classiques.** Vous pouvez en revanche :
19+
**N'appelez pas les Hooks depuis des fonctions JavaScript classiques.** Vous pouvez en revanche :
2020

2121
* ✅ Appeler les Hooks depuis des fonctions composants React.
2222
* ✅ Appeler les Hooks depuis des Hooks personnalisés (nous aborderons le sujet [dans la prochaine page](/docs/hooks-custom.html)).
@@ -25,7 +25,7 @@ En suivant cette règle, vous garantissez que toute la logique d’état d’un
2525

2626
## Plugin ESLint {#eslint-plugin}
2727

28-
Nous avons publié un plugin ESLint appelé [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) qui assure le respect de ces deux règles. Vous pouvez ajouter ce plugin à votre projet si vous souhaitez l'utiliser :
28+
Nous avons publié un plugin ESLint appelé [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) qui assure le respect de ces deux règles. Vous pouvez ajouter ce plugin à votre projet si vous souhaitez l'utiliser :
2929

3030
```bash
3131
npm install eslint-plugin-react-hooks
@@ -51,7 +51,7 @@ npm install eslint-plugin-react-hooks
5151

5252
## Explications {#explanation}
5353

54-
Comme nous l'avons [appris plus tôt](/docs/hooks-state.html#tip-using-multiple-state-variables), nous pouvons utiliser plusieurs Hooks *State* ou *Effect* au sein d'un même composant :
54+
Comme nous l'avons [appris plus tôt](/docs/hooks-state.html#tip-using-multiple-state-variables), nous pouvons utiliser plusieurs Hooks *State* ou *Effect* au sein d'un même composant :
5555

5656
```js
5757
function Form() {
@@ -108,16 +108,16 @@ Tant que l'ordre d'appel aux Hooks est le même d’un affichage à l’autre, R
108108
}
109109
```
110110

111-
La condition `name !== ''` est vraie au premier affichage, donc nous exécutons ce Hook. Cependant, lors du prochain affichage l'utilisateur risque de vider le formulaire, ce qui invalidera la condition. À présent que nous sautons ce Hook lors de l’affichage, l'ordre d'appel aux Hooks devient différent :
111+
La condition `name !== ''` est vraie au premier affichage, donc nous exécutons ce Hook. Cependant, lors du prochain affichage l'utilisateur risque de vider le formulaire, ce qui invalidera la condition. À présent que nous sautons ce Hook lors de l’affichage, l'ordre d'appel aux Hooks devient différent :
112112

113113
```js
114114
useState('Mary') // 1. Lit la variable d'état name (l'argument est ignoré)
115-
// useEffect(persistForm) // 🔴 Ce Hook n'a pas été appelé !
116-
useState('Poppins') // 🔴 2 (mais était 3). Échoue lors de la lecture de la variable d'état surname
117-
useEffect(updateTitle) // 🔴 3 (mais était 4). Échoue lors du remplacement de l'effet
115+
// useEffect(persistForm) // 🔴 Ce Hook n'a pas été appelé !
116+
useState('Poppins') // 🔴 2. (mais était 3). Échoue à lire la variable d'état surname
117+
useEffect(updateTitle) // 🔴 3. (mais était 4). Échoue à remplacer de l'effet
118118
```
119119

120-
React ne saurait pas quoi renvoyer lors du second appel au Hook `useState`. React s'attendait à ce que le second appel à un Hook dans ce composant corresponde à l'effet `persistForm`, comme lors de l’affichage précédent, mais ce n'est plus le cas. A partir de là, chaque appel à un Hook ultérieur à celui que nous avons sauté sera aussi décalé de un, provoquant des bugs.
120+
React ne saurait pas quoi renvoyer lors du second appel au Hook `useState`. React s'attendait à ce que le deuxième appel à un Hook dans ce composant corresponde à l'effet `persistForm`, comme lors de l’affichage précédent, mais ce n'est plus le cas. A partir de là, chaque appel à un Hook ultérieur à celui que nous avons sauté sera aussi décalé de un, provoquant des bugs.
121121

122122
**C'est pourquoi les Hooks doivent être appelés au niveau racine de vos composants.** Si vous voulez exécuter un effet de manière conditionnelle, vous pouvez mettre cette condition *à l'intérieur* de votre Hook :
123123

@@ -130,7 +130,7 @@ React ne saurait pas quoi renvoyer lors du second appel au Hook `useState`. Reac
130130
});
131131
```
132132

133-
**Remarquez que vous n’avez pas à vous inquiéter de ça si vous utilisez [la règle de lint fournie](https://www.npmjs.com/package/eslint-plugin-react-hooks).** Mais maintenant, vous savez *pourquoi* les Hooks fonctionnent de cette manière et quels problèmes la règle évite.
133+
**Remarquez que vous n’avez pas à vous inquiéter de ça si vous utilisez [le plugin de *linter* fourni](https://www.npmjs.com/package/eslint-plugin-react-hooks).** Mais maintenant, vous savez *pourquoi* les Hooks fonctionnent de cette manière et quels problèmes ces règles évitent.
134134

135135
## Prochaines étapes {#next-steps}
136136

0 commit comments

Comments
 (0)