Skip to content

Commit a4bd8b7

Browse files
authored
Merge pull request #531 from reactjs/copy/hydrate
Translation of the `hydrate` page
2 parents c580596 + ba8f3d8 commit a4bd8b7

File tree

1 file changed

+47
-46
lines changed

1 file changed

+47
-46
lines changed

src/content/reference/react-dom/hydrate.md

Lines changed: 47 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ title: hydrate
44

55
<Deprecated>
66

7-
This API will be removed in a future major version of React.
7+
Cette API sera retirée d'une future version majeure de React.
88

9-
In React 18, `hydrate` was replaced by [`hydrateRoot`.](/reference/react-dom/client/hydrateRoot) Using `hydrate` in React 18 will warn that your app will behave as if it’s running React 17. Learn more [here.](/blog/2022/03/08/react-18-upgrade-guide#updates-to-client-rendering-apis)
9+
React 18 a remplacé `hydrate` par [`hydrateRoot`](/reference/react-dom/client/hydrateRoot). Utiliser `hydrate` avec React 18 vous avertira que votre appli se comportera comme dans React 17. [Apprenez-en davantage ici](/blog/2022/03/08/react-18-upgrade-guide#updates-to-client-rendering-apis).
1010

1111
</Deprecated>
1212

1313
<Intro>
1414

15-
`hydrate` lets you display React components inside a browser DOM node whose HTML content was previously generated by [`react-dom/server`](/reference/react-dom/server) in React 17 and below.
15+
`hydrate` vous permet d'afficher des composants React au sein d'un nœud DOM dont le contenu HTML a été préalablement généré par [`react-dom/server`](/reference/react-dom/server) dans React 17 et antérieur.
1616

1717
```js
1818
hydrate(reactNode, domNode, callback?)
@@ -24,68 +24,69 @@ hydrate(reactNode, domNode, callback?)
2424
2525
---
2626
27-
## Reference {/*reference*/}
27+
## Référence {/*reference*/}
2828
2929
### `hydrate(reactNode, domNode, callback?)` {/*hydrate*/}
3030
31-
Call `hydrate` in React 17 and below to “attach” React to existing HTML that was already rendered by React in a server environment.
31+
Appelez `hydrate` dans React 17 et antérieur pour « attacher » React à du HTML existant produit par React dans un environnement serveur.
3232
3333
```js
3434
import { hydrate } from 'react-dom';
3535

3636
hydrate(reactNode, domNode);
3737
```
3838
39-
React will attach to the HTML that exists inside the `domNode`, and take over managing the DOM inside it. An app fully built with React will usually only have one `hydrate` call with its root component.
39+
React s'attachera au HTML existant au sein de `domNode`, et prendra en main la gestion du fragment DOM concerné. Une appli intégralement construite avec React n'aura généralement besoin que d'un appel à `hydrate`, pour son composant racine.
4040
41-
[See more examples below.](#usage)
41+
[Voir d'autres exemples ci-dessous](#usage).
4242
43-
#### Parameters {/*parameters*/}
43+
#### Paramètres {/*parameters*/}
4444
45-
* `reactNode`: The "React node" used to render the existing HTML. This will usually be a piece of JSX like `<App />` which was rendered with a `ReactDOM Server` method such as `renderToString(<App />)` in React 17.
45+
* `reactNode` : le « nœud React » utilisé pour afficher le HTML existant. Ce sera généralement un bout de JSX du genre `<App />`, qui a été rendu côté serveur par une méthode de `ReactDOM Server` du style `renderToString(<App />)` dans React 17.
4646
47-
* `domNode`: A [DOM element](https://developer.mozilla.org/en-US/docs/Web/API/Element) that was rendered as the root element on the server.
47+
* `domNode` : un [élément DOM](https://developer.mozilla.org/docs/Web/API/Element) que le serveur a utilisé comme élément racine dans son rendu.
4848
49-
* **optional**: `callback`: A function. If passed, React will call it after your component is hydrated.
49+
* `callback` **optionnel** : une fonction. Si elle est passée, React l'appellera immédiatement après que le composant a été hydraté.
5050
51-
#### Returns {/*returns*/}
51+
#### Valeur renvoyée {/*returns*/}
5252
53-
`hydrate` returns null.
53+
`hydrate` renvoie `null`.
5454
55-
#### Caveats {/*caveats*/}
56-
* `hydrate` expects the rendered content to be identical with the server-rendered content. React can patch up differences in text content, but you should treat mismatches as bugs and fix them.
57-
* In development mode, React warns about mismatches during hydration. There are no guarantees that attribute differences will be patched up in case of mismatches. This is important for performance reasons because in most apps, mismatches are rare, and so validating all markup would be prohibitively expensive.
58-
* You'll likely have only one `hydrate` call in your app. If you use a framework, it might do this call for you.
59-
* If your app is client-rendered with no HTML rendered already, using `hydrate()` is not supported. Use [render()](/reference/react-dom/render) (for React 17 and below) or [createRoot()](/reference/react-dom/client/createRoot) (for React 18+) instead.
55+
#### Limitations {/*caveats*/}
56+
57+
* `hydrate` s'attend à ce que le contenu produit soit identique à celui du rendu côté serveur. React peut colmater les différences de contenu textuel, mais tout écart doit être vu comme un bug et corrigé.
58+
* En mode développement, React vous avertira de tout écart de correspondance durant l'hydratation. Vous n'avez aucune garantie que les différences d'attributs seront résolues. C'est important pour des raisons de performances parce que dans la plupart des applis, les écarts sont rares, aussi valider tout le balisage serait d'une lourdeur prohibitive.
59+
* Vous n'aurez sans doute besoin que d'un appel à `hydrate` dans votre appli. Si vous utilisez un framework, il le fera peut-être pour vous.
60+
* Si votre appli est entièrement côté client, sans HTML déjà généré par le serveur, appeler `hydrate()` n'est pas autorisé. Utilisez plutôt [`render()`](/reference/react-dom/render) (pour React 17 et antérieur) ou [`createRoot()`](/reference/react-dom/client/createRoot) (pour React 18+).
6061
6162
---
6263
63-
## Usage {/*usage*/}
64+
## Utilisation {/*usage*/}
6465
65-
Call `hydrate` to attach a <CodeStep step={1}>React component</CodeStep> into a server-rendered <CodeStep step={2}>browser DOM node</CodeStep>.
66+
Appelez `hydrate` pour attacher un <CodeStep step={1}>composant React</CodeStep> à un<CodeStep step={2}>nœud du DOM navigateur</CodeStep> dont le HTML était généré côté serveur.
6667
6768
```js [[1, 3, "<App />"], [2, 3, "document.getElementById('root')"]]
6869
import { hydrate } from 'react-dom';
6970

7071
hydrate(<App />, document.getElementById('root'));
7172
```
7273
73-
Using `hydrate()` to render a client-only app (an app without server-rendered HTML) is not supported. Use [`render()`](/reference/react-dom/render) (in React 17 and below) or [`createRoot()`](/reference/react-dom/client/createRoot) (in React 18+) instead.
74+
N'utilisez pas `hydrate()` pour afficher une appli entièrement côté client (une appli sans HTML généré côté serveur). Utilisez plutôt[`render()`](/reference/react-dom/render) (pour React 17 et antérieur) ou [`createRoot()`](/reference/react-dom/client/createRoot) (pour React 18+).
7475
75-
### Hydrating server-rendered HTML {/*hydrating-server-rendered-html*/}
76+
### Hydrater du HTML produit par le serveur {/*hydrating-server-rendered-html*/}
7677
77-
In React, "hydration" is how React "attaches" to existing HTML that was already rendered by React in a server environment. During hydration, React will attempt to attach event listeners to the existing markup and take over rendering the app on the client.
78+
Dans React, « l'hydratation » est le mécanisme par lequel React « s'attache » à du HTML existant, déjà produit par React dans un environnement serveur. Durant l'hydratation, React tentera d'associer les gestionnaires d'événements au balisage existant et de prendre la main sur l'affichage de l'application côté client.
7879
79-
In apps fully built with React, **you will usually only hydrate one "root", once at startup for your entire app**.
80+
Dans des applis entièrement construites avec React, **vous n'aurez généralement besoin d'hydrater qu'une « racine », une seule fois au démarrage de votre appli.**
8081
8182
<Sandpack>
8283
8384
```html public/index.html
8485
<!--
85-
HTML content inside <div id="root">...</div>
86-
was generated from App by react-dom/server.
86+
Le contenu HTML au sein de <div id="root">...</div>
87+
a été généré à partir de App par react-dom/server.
8788
-->
88-
<div id="root"><h1>Hello, world!</h1></div>
89+
<div id="root"><h1>Salut tout le monde !</h1></div>
8990
```
9091
9192
```js index.js active
@@ -98,32 +99,32 @@ hydrate(<App />, document.getElementById('root'));
9899
99100
```js App.js
100101
export default function App() {
101-
return <h1>Hello, world!</h1>;
102+
return <h1>Salut tout le monde !</h1>;
102103
}
103104
```
104105
105106
</Sandpack>
106107
107-
Usually you shouldn't need to call `hydrate` again or to call it in more places. From this point on, React will be managing the DOM of your application. To update the UI, your components will [use state.](/reference/react/useState)
108+
En temps normal, vous ne devriez pas avoir besoin de rappeler `hydrate` ou de l'appeler à plusieurs endroits. À partir de ce moment-là, c'est React qui gèrera le DOM de votre application. Pour mettre à jour l'UI, vos composants utiliseront [l'état local](/reference/react/useState).
108109
109-
For more information on hydration, see the docs for [`hydrateRoot`.](/reference/react-dom/client/hydrateRoot)
110+
Pour en savoir plus sur l'hydratation, consultez la documentation d'[`hydrateRoot`](/reference/react-dom/client/hydrateRoot).
110111
111112
---
112113
113-
### Suppressing unavoidable hydration mismatch errors {/*suppressing-unavoidable-hydration-mismatch-errors*/}
114+
### Ignorer les incohérences d'hydratation incontournables {/*suppressing-unavoidable-hydration-mismatch-errors*/}
114115
115-
If a single element’s attribute or text content is unavoidably different between the server and the client (for example, a timestamp), you may silence the hydration mismatch warning.
116+
Si un attribut ou contenu textuel d'un seul élément est forcément différent entre le serveur et le client (par exemple, un horodatage), vous pouvez réduire au silence l'avertissement d'écart à l'hydratation.
116117
117-
To silence hydration warnings on an element, add `suppressHydrationWarning={true}`:
118+
Pour éviter les avertissements d'hydratation sur un élément, ajoutez-lui `suppressHydrationWarning={true}`:
118119
119120
<Sandpack>
120121
121122
```html public/index.html
122123
<!--
123-
HTML content inside <div id="root">...</div>
124-
was generated from App by react-dom/server.
124+
Le contenu HTML au sein de <div id="root">...</div>
125+
a été généré à partir de App par react-dom/server.
125126
-->
126-
<div id="root"><h1>Current Date: 01/01/2020</h1></div>
127+
<div id="root"><h1>Nous sommes le 01/01/2020</h1></div>
127128
```
128129
129130
```js index.js
@@ -138,30 +139,30 @@ hydrate(<App />, document.getElementById('root'));
138139
export default function App() {
139140
return (
140141
<h1 suppressHydrationWarning={true}>
141-
Current Date: {new Date().toLocaleDateString()}
142+
Nous sommes le {new Date().toLocaleDateString()}
142143
</h1>
143144
);
144145
}
145146
```
146147
147148
</Sandpack>
148149
149-
This only works one level deep, and is intended to be an escape hatch. Don’t overuse it. Unless it’s text content, React still won’t attempt to patch it up, so it may remain inconsistent until future updates.
150+
Ça ne marche qu'à un niveau de profondeur, et c'est vraiment à voir comme une échappatoire. N'en abusez pas. À moins qu'il ne s'agisse de contenu textuel, React n'essaiera toujours pas de corriger le tir, ça peut donc rester incohérent jusqu'à des mises à jour ultérieures.
150151
151152
---
152153
153-
### Handling different client and server content {/*handling-different-client-and-server-content*/}
154+
### Gérer des contenus client et serveur différents {/*handling-different-client-and-server-content*/}
154155
155-
If you intentionally need to render something different on the server and the client, you can do a two-pass rendering. Components that render something different on the client can read a [state variable](/reference/react/useState) like `isClient`, which you can set to `true` in an [effect](/reference/react/useEffect):
156+
Si vous cherchez explicitement à produire un contenu différent sur le serveur et sur le client, vous pouvez faire un rendu en deux temps. Les composants qui ont un rendu différent côté client peuvent consulter une [variable d'état](/reference/react/useState) telle que `isClient`, que vous définirez à `true` dans un [Effet](/reference/react/useEffect) :
156157
157158
<Sandpack>
158159
159160
```html public/index.html
160161
<!--
161-
HTML content inside <div id="root">...</div>
162-
was generated from App by react-dom/server.
162+
Le contenu HTML au sein de <div id="root">...</div>
163+
a été généré à partir de App par react-dom/server.
163164
-->
164-
<div id="root"><h1>Is Server</h1></div>
165+
<div id="root"><h1>Côté serveur</h1></div>
165166
```
166167
167168
```js index.js
@@ -184,18 +185,18 @@ export default function App() {
184185

185186
return (
186187
<h1>
187-
{isClient ? 'Is Client' : 'Is Server'}
188+
{isClient ? 'Côté client' : 'Côté serveur'}
188189
</h1>
189190
);
190191
}
191192
```
192193
193194
</Sandpack>
194195
195-
This way the initial render pass will render the same content as the server, avoiding mismatches, but an additional pass will happen synchronously right after hydration.
196+
Ainsi la passe de rendu initiale a le même contenu que le serveur, ce qui évite les écarts, mais une passe complémentaire survient de façon synchrone juste après l'hydratation.
196197
197198
<Pitfall>
198199
199-
This approach makes hydration slower because your components have to render twice. Be mindful of the user experience on slow connections. The JavaScript code may load significantly later than the initial HTML render, so rendering a different UI immediately after hydration may feel jarring to the user.
200+
Cette approche ralentit l'hydratation parce que vos composants doivent effectuer deux rendus. Pensez à l'expérience utilisateur sur des connexions lentes. Le code JavaScript peut n'arriver que bien après le rendu HTML initial, de sorte que changer l'UI immédiatement après l'hydratation peut être déstabilisant pour l'utilisateur.
200201
201202
</Pitfall>

0 commit comments

Comments
 (0)