Skip to content

Commit 32c2f0f

Browse files
committed
Finished translation of Hydrate page
1 parent 95d7dca commit 32c2f0f

File tree

1 file changed

+44
-45
lines changed

1 file changed

+44
-45
lines changed

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

Lines changed: 44 additions & 45 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+
Цей API буде виключено з майбутньої основної версії 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 `hydrate` був замінений на [`hydrateRoot`.](/reference/react-dom/client/hydrateRoot) Використання `hydrate` у React 18 викличе попередження, що ваш застосунок буде поводитися так, наче використовує React 17. Дізнайтеся більше [тут.](/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` дозволяє відображати React-компоненти всередині браузерного DOM-вузла, HTML-вміст якого був попередньо згенерований, використовуючи [`react-dom/server`](/reference/react-dom/server) з React 17 чи ранішої версії.
1616

1717
```js
1818
hydrate(reactNode, domNode, callback?)
@@ -24,66 +24,66 @@ hydrate(reactNode, domNode, callback?)
2424
2525
---
2626
27-
## Reference {/*reference*/}
27+
## Опис {/*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+
Викличте `hydrate` у React 17 і раніших версіях, щоб "прикріпити" React до наявного HTML, який попередньо був відрендерений у серверному середовищі.
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 прикріпиться до HTML, що знаходиться всередині `domNode`, і візьме на себе управління DOM у ньому. Застосунок, повністю створений за допомогою React, зазвичай матиме тільки один виклик `hydrate` у кореневому компоненті.
4040
41-
[See more examples below.](#usage)
41+
[Перегляньте більше прикладів нижче.](#usage)
4242
43-
#### Parameters {/*parameters*/}
43+
#### Параметри {/*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`: "React-вузол", який використовується для рендеру наявного HTML. Зазвичай це буде якийсь JSX, наприклад `<App />`, що був відрендерений методом `ReactDOM Server`, як-от `renderToString(<App />)` з 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`: [DOM-елемент](https://developer.mozilla.org/en-US/docs/Web/API/Element), що був відрендерений як кореневий елемент на стороні сервера.
4848
49-
* **optional**: `callback`: A function. If passed, React will call it after your component is hydrated.
49+
* **опційний**: `callback`: Функція. Якщо передана, React викличе її після гідрації вашого компонента.
5050
51-
#### Returns {/*returns*/}
51+
#### Результат {/*returns*/}
5252
53-
`hydrate` returns null.
53+
`hydrate` повертає 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+
#### Застереження {/*caveats*/}
56+
* `hydrate` очікує, що відрендерений вміст має бути ідентичним до того, який би відрендерив сервер. React може виправляти розбіжності у тексті, але вам слід сприймати невідповідності як помилки та виправляти їх cамі.
57+
* У режимі розробки React попереджає про розбіжності під час гідрації. Немає жодних гарантій, що різниця в атрибутах буде виправлена у випадку розбіжностей. Це важливо для швидкодії, оскільки у більшості застосунків розбіжності трапляються рідко, валідація всієї розмітки була б занадто витратною.
58+
* Ви переважно будете викликати `hydrate` лише один раз. Якщо ви використовуєте фреймворк, він може робити це за вас.
59+
* Якщо ваш застосунок рендериться на стороні клієнта без попередньо відрендереного HTML, використання `hydrate()` не підтримується. Використовуйте [render()](/reference/react-dom/render) (для React 17 і раніших версій) або [createRoot()](/reference/react-dom/client/createRoot) (для React 18+) натомість.
6060
6161
---
6262
63-
## Usage {/*usage*/}
63+
## Використання {/*usage*/}
6464
65-
Call `hydrate` to attach a <CodeStep step={1}>React component</CodeStep> into a server-rendered <CodeStep step={2}>browser DOM node</CodeStep>.
65+
Викличте `hydrate`, щоб прикріпити <CodeStep step={1}>React-компонент</CodeStep> до відрендереного на стороні сервера <CodeStep step={2}>браузерного DOM-вузла</CodeStep>.
6666
6767
```js [[1, 3, "<App />"], [2, 3, "document.getElementById('root')"]]
6868
import { hydrate } from 'react-dom';
6969

7070
hydrate(<App />, document.getElementById('root'));
7171
```
7272
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.
73+
Використання `hydrate()` для рендеру повністю клієнтського застосунку (застосунок без HTML, що рендериться на стороні сервера) не підтримується. Використовуйте [`render()`](/reference/react-dom/render) (для React 17 і раніших версій) або [`createRoot()`](/reference/react-dom/client/createRoot) (для React 18+) натомість.
7474
75-
### Hydrating server-rendered HTML {/*hydrating-server-rendered-html*/}
75+
### Гідрація відрендереного сервером HTML {/*hydrating-server-rendered-html*/}
7676
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.
77+
У React "гідрація" — це те, як React "прикріплюється" до наявного HTML, попередньо відрендереного у серверному середовищі за допомогою React. Під час гідрації React спробує додати слухачі подій до наявної розмітки та взяти на себе рендеринг застосунку на стороні клієнта.
7878
79-
In apps fully built with React, **you will usually only hydrate one "root", once at startup for your entire app**.
79+
У застосунках, повністю створених за допомогою React, **ви зазвичай гідруватиме лише один "корінь" один раз під час запуску всього вашого застосунку**.
8080
8181
<Sandpack>
8282
8383
```html public/index.html
8484
<!--
85-
HTML content inside <div id="root">...</div>
86-
was generated from App by react-dom/server.
85+
Вміст HTML усередині <div id="root">...</div>
86+
був згенерований, починаючи з компонента App, за допомогою react-dom/server.
8787
-->
8888
<div id="root"><h1>Hello, world!</h1></div>
8989
```
@@ -104,26 +104,26 @@ export default function App() {
104104
105105
</Sandpack>
106106
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)
107+
Зазвичай ви не повинні викликати `hydrate` знову або в інших місцях також. З цього моменту React буде керувати DOM вашого застосунку. Щоб оновлювати UI, ваші компоненти [використовуватимуть стан.](/reference/react/useState)
108108
109-
For more information on hydration, see the docs for [`hydrateRoot`.](/reference/react-dom/client/hydrateRoot)
109+
Щоб отримати більше інформації про гідрацію, перегляньте документацію [`hydrateRoot`.](/reference/react-dom/client/hydrateRoot)
110110
111111
---
112112
113-
### Suppressing unavoidable hydration mismatch errors {/*suppressing-unavoidable-hydration-mismatch-errors*/}
113+
### Приховування неминучих помилок розбіжності під час гідрації {/*suppressing-unavoidable-hydration-mismatch-errors*/}
114114
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.
115+
Якщо атрибут або текстовий вміст хоча б одного елемента неминуче відрізняється на стороні сервера та клієнта (наприклад, часова мітка), ви можете приховати попередження про розбіжності під час гідрації.
116116
117-
To silence hydration warnings on an element, add `suppressHydrationWarning={true}`:
117+
Щоб приховати гідраційні попередження в елементі, додайте `suppressHydrationWarning={true}`:
118118
119119
<Sandpack>
120120
121121
```html public/index.html
122122
<!--
123-
HTML content inside <div id="root">...</div>
124-
was generated from App by react-dom/server.
123+
Вміст HTML усередині <div id="root">...</div>
124+
був згенерований, починаючи з компонента App, за допомогою react-dom/server.
125125
-->
126-
<div id="root"><h1>Current Date: 01/01/2020</h1></div>
126+
<div id="root"><h1>Поточна дата: 01/01/2020</h1></div>
127127
```
128128
129129
```js index.js
@@ -138,30 +138,29 @@ hydrate(<App />, document.getElementById('root'));
138138
export default function App() {
139139
return (
140140
<h1 suppressHydrationWarning={true}>
141-
Current Date: {new Date().toLocaleDateString()}
141+
Поточна дата: {new Date().toLocaleDateString()}
142142
</h1>
143143
);
144144
}
145145
```
146146
147147
</Sandpack>
148148
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.
149+
Це працює лише на один рівень вглиб і створено як запасний варіант. Не використовуйте його занадто часто. Якщо це не текстовий вміст, React не намагатиметься виправити розбіжність, тож вона може залишитися до майбутніх оновлень стану.
150150
151151
---
152152
153-
### Handling different client and server content {/*handling-different-client-and-server-content*/}
153+
### Робота з вмістом, що різниться на стороні клієнта та сервера {/*handling-different-client-and-server-content*/}
154154
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):
155+
Якщо вам потрібно відрендерити різний вміст на стороні сервера та клієнта, ви можете зробити двоетапний рендеринг. Компоненти, які рендерять щось інше на стороні клієнта, можуть використовувати [змінну стану](/reference/react/useState), наприклад `isClient`, яку ви можете змінити на `true` в [ефекті](/reference/react/useEffect):
156156
157157
<Sandpack>
158158
159-
```html public/index.html
160159
<!--
161-
HTML content inside <div id="root">...</div>
162-
was generated from App by react-dom/server.
160+
Вміст HTML усередині <div id="root">...</div>
161+
був згенерований, починаючи з компонента App, за допомогою react-dom/server.
163162
-->
164-
<div id="root"><h1>Is Server</h1></div>
163+
<div id="root"><h1>Це сервер</h1></div>
165164
```
166165

167166
```js index.js
@@ -184,18 +183,18 @@ export default function App() {
184183
185184
return (
186185
<h1>
187-
{isClient ? 'Is Client' : 'Is Server'}
186+
{isClient ? 'Це клієнт' : 'Це сервер'}
188187
</h1>
189188
);
190189
}
191190
```
192191

193192
</Sandpack>
194193

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.
194+
Отже, початковий рендер відрендерить вміст такий же, як і на стороні сервера, уникаючи розбіжностей, однак, синхронно й одразу після гідрації відбудеться додатковий рендер.
196195

197196
<Pitfall>
198197

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.
198+
Цей підхід сповільнює процес гідрації, тому що ваші компоненти рендеряться двічі. Пам'ятайте про досвід користувача у разі повільного з'єднання. JavaScript-код може завантажитися значно пізніше, ніж відрендериться початковий HTML, тому рендер іншого UI одразу після гідрації може відчуватися для користувача різким.
200199

201200
</Pitfall>

0 commit comments

Comments
 (0)