Skip to content

Commit 1f071a6

Browse files
committed
copy(l10n): rules of hooks
1 parent 0668721 commit 1f071a6

File tree

1 file changed

+33
-33
lines changed

1 file changed

+33
-33
lines changed

src/content/reference/rules/rules-of-hooks.md

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,62 +2,62 @@
22
title: Les règles des Hooks
33
---
44

5-
{/* FIXME:L10N */}
6-
75
<Intro>
8-
Hooks are defined using JavaScript functions, but they represent a special type of reusable UI logic with restrictions on where they can be called.
6+
7+
Les Hooks sont définis au moyen de fonctions JavaScript, mais représentent un type particulier de logique d'UI réutilisables, avec des restrictions sur leurs emplacements possibles d'appel.
8+
99
</Intro>
1010

1111
<InlineToc />
1212

1313
---
1414

15-
## Only call Hooks at the top level {/*only-call-hooks-at-the-top-level*/}
15+
## N'appelez des Hooks qu'au niveau racine {/*only-call-hooks-at-the-top-level*/}
1616

17-
Functions whose names start with `use` are called [*Hooks*](/reference/react) in React.
17+
Les fonctions dont le nom commence par `use` sont appelées [*Hooks*](/reference/react) en React.
1818

19-
**Don’t call Hooks inside loops, conditions, nested functions, or `try`/`catch`/`finally` blocks.** Instead, always use Hooks at the top level of your React function, before any early returns. You can only call Hooks while React is rendering a function component:
19+
**N'appelez pas de Hooks au sein de boucles, conditions, fonctions imbriquées ou blocks `try`/`catch`/`finally` .** Utilisez plutôt les Hooks systématiquement au niveau racine de votre fonction React, avant tout retour anticipé éventuel *(early return, NdT)*. Vous ne pouvez appelez des Hooks que pendant que React fait le rendu d'une fonction composant :
2020

21-
*Call them at the top level in the body of a [function component](/learn/your-first-component).
22-
*Call them at the top level in the body of a [custom Hook](/learn/reusing-logic-with-custom-hooks).
21+
*Appelez-les à la racine du corps d'une [fonction composant](/learn/your-first-component).
22+
*Appelez-les à la racine du corps d'un [Hook personnalisé](/learn/reusing-logic-with-custom-hooks).
2323

2424
```js{2-3,8-9}
2525
function Counter() {
26-
// ✅ Good: top-level in a function component
26+
// ✅ Correct : niveau racine d’une fonction composant
2727
const [count, setCount] = useState(0);
2828
// ...
2929
}
3030
3131
function useWindowWidth() {
32-
// ✅ Good: top-level in a custom Hook
32+
// ✅ Correct : niveau racine d’un Hook personnalisé
3333
const [width, setWidth] = useState(window.innerWidth);
3434
// ...
3535
}
3636
```
3737

38-
It’s **not** supported to call Hooks (functions starting with `use`) in any other cases, for example:
38+
React **ne permet pas** l'appels de Hooks (les fonctions dont le nom commence par `use`) dans d'autres situations, par exemple :
3939

40-
* 🔴 Do not call Hooks inside conditions or loops.
41-
* 🔴 Do not call Hooks after a conditional `return` statement.
42-
* 🔴 Do not call Hooks in event handlers.
43-
* 🔴 Do not call Hooks in class components.
44-
* 🔴 Do not call Hooks inside functions passed to `useMemo`, `useReducer`, or `useEffect`.
45-
* 🔴 Do not call Hooks inside `try`/`catch`/`finally` blocks.
40+
* 🔴 N'appelez pas de Hooks au sein de conditions ou de boucles.
41+
* 🔴 N'appelez pas de Hooks après une instruction `return` conditionnelle.
42+
* 🔴 N'appelez pas de Hooks au sein de gestionnaires d'événements.
43+
* 🔴 N'appelez pas de Hooks dans des composants à base de classes.
44+
* 🔴 N'appelez pas de Hooks au sein de fonctions passées à `useMemo`, `useReducer` ou `useEffect`.
45+
* 🔴 N'appelez pas de Hooks au sein de blocs `try`/`catch`/`finally`.
4646

47-
If you break these rules, you might see this error.
47+
Si vous enfreignez ces règles, vous verrez peut-être une erreur.
4848

4949
```js{3-4,11-12,20-21}
5050
function Bad({ cond }) {
5151
if (cond) {
52-
// 🔴 Bad: inside a condition (to fix, move it outside!)
52+
// 🔴 Incorrect : au sein d’une condition (pour corriger ça, sortez-en-le !)
5353
const theme = useContext(ThemeContext);
5454
}
5555
// ...
5656
}
5757
5858
function Bad() {
5959
for (let i = 0; i < 10; i++) {
60-
// 🔴 Bad: inside a loop (to fix, move it outside!)
60+
// 🔴 Incorrect : au sein d’une boucle (pour corriger ça, sortez-en-le !)
6161
const theme = useContext(ThemeContext);
6262
}
6363
// ...
@@ -67,22 +67,22 @@ function Bad({ cond }) {
6767
if (cond) {
6868
return;
6969
}
70-
// 🔴 Bad: after a conditional return (to fix, move it before the return!)
70+
// 🔴 Incorrect : après un retour anticipé conditionnel (déplacez-le avant le return !)
7171
const theme = useContext(ThemeContext);
7272
// ...
7373
}
7474
7575
function Bad() {
7676
function handleClick() {
77-
// 🔴 Bad: inside an event handler (to fix, move it outside!)
77+
// 🔴 Incorrect : au sein d’un gestionnaire d’événements (pour corriger ça, sortez-en-le !)
7878
const theme = useContext(ThemeContext);
7979
}
8080
// ...
8181
}
8282
8383
function Bad() {
8484
const style = useMemo(() => {
85-
// 🔴 Bad: inside useMemo (to fix, move it outside!)
85+
// 🔴 Incorrect : au sein d’un useMemo (pour corriger ça, sortez-en-le !)
8686
const theme = useContext(ThemeContext);
8787
return createStyle(theme);
8888
});
@@ -91,47 +91,47 @@ function Bad() {
9191
9292
class Bad extends React.Component {
9393
render() {
94-
// 🔴 Bad: inside a class component (to fix, write a function component instead of a class!)
94+
// 🔴 Incorrect : au sein d’un composant à base de classe (utilisez plutôt une fonction composant !)
9595
useEffect(() => {})
9696
// ...
9797
}
9898
}
9999
100100
function Bad() {
101101
try {
102-
// 🔴 Bad: inside try/catch/finally block (to fix, move it outside!)
102+
// 🔴 Incorrect : au sein d’un bloc try/catch/finally block (pour corriger ça, sortez-en-le !)
103103
const [x, setX] = useState(0);
104104
} catch {
105105
const [x, setX] = useState(1);
106106
}
107107
}
108108
```
109109

110-
You can use the [`eslint-plugin-react-hooks` plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) to catch these mistakes.
110+
Vous pouvez utiliser le [plugin `eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) pour repérer ces erreurs.
111111

112112
<Note>
113113

114-
[Custom Hooks](/learn/reusing-logic-with-custom-hooks) *may* call other Hooks (that's their whole purpose). This works because custom Hooks are also supposed to only be called while a function component is rendering.
114+
[Les Hooks personnalisés](/learn/reusing-logic-with-custom-hooks) *peuvent* appeler d'autres Hooks (c'est même leur raison d'être). Ça fonctionne parce que les Hooks personnalisés sont eux aussi censés n'être appelés que pendant la phase de rendu d'une fonction composant.
115115

116116
</Note>
117117

118118
---
119119

120-
## Only call Hooks from React functions {/*only-call-hooks-from-react-functions*/}
120+
## N'appelez des Hooks que depuis des fonctions React {/*only-call-hooks-from-react-functions*/}
121121

122-
Don’t call Hooks from regular JavaScript functions. Instead, you can:
122+
N'appelez pas de Hooks depuis des fonctions JavaScript classiques. Vous devriez plutôt :
123123

124-
Call Hooks from React function components.
125-
Call Hooks from [custom Hooks](/learn/reusing-logic-with-custom-hooks#extracting-your-own-custom-hook-from-a-component).
124+
Appeler des Hooks depuis des fonctions composants React.
125+
Appeler des Hooks depuis des [Hooks personnalisés](/learn/reusing-logic-with-custom-hooks#extracting-your-own-custom-hook-from-a-component).
126126

127-
By following this rule, you ensure that all stateful logic in a component is clearly visible from its source code.
127+
En suivant cette règle, vous garantissez que toute la logique à état d'un composant est clairement visible dans son code source.
128128

129129
```js {2,5}
130130
function FriendList() {
131131
const [onlineStatus, setOnlineStatus] = useOnlineStatus(); //
132132
}
133133

134-
function setOnlineStatus() { //Not a component or custom Hook!
134+
function setOnlineStatus() { //Ni un composant ni un Hook personnalisé !
135135
const [onlineStatus, setOnlineStatus] = useOnlineStatus();
136136
}
137137
```

0 commit comments

Comments
 (0)