Skip to content

Commit b32a3d4

Browse files
committed
Translation for 'useId' page
1 parent e153428 commit b32a3d4

File tree

1 file changed

+37
-40
lines changed

1 file changed

+37
-40
lines changed

src/content/reference/react/useId.md

Lines changed: 37 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ title: useId
44

55
<Intro>
66

7-
`useId` is a React Hook for generating unique IDs that can be passed to accessibility attributes.
8-
97
`useId` — це хук для генерації унікальних ID, які можуть передаватись як атрибути доступності.
108

119
```js
@@ -18,11 +16,11 @@ const id = useId()
1816

1917
---
2018

21-
## Reference {/*reference*/}
19+
## Референс {/*reference*/}
2220

2321
### `useId()` {/*useid*/}
2422

25-
Викличте `useId` на верхньому рівні вашого компонента, щоб згенерувати унікальне ID:
23+
Викликайте `useId` на верхньому рівні вашого компонента, щоб згенерувати унікальне ID:
2624

2725
```js
2826
import { useId } from 'react';
@@ -40,15 +38,15 @@ function PasswordField() {
4038
4139
#### Результат {/*returns*/}
4240
43-
`useId` повертає унікальну ID стрінгу, пов'язану з конкретним запитом `useId` в цьому конкретньому компоненті.
41+
`useId` повертає унікальну ID строку, пов'язану з конкретним запитом `useId` в цьому конкретному компоненті.
4442
4543
#### Застереження {/*caveats*/}
4644
47-
* `useId` — це хук, тож він може бути викликаний тільки **на верхньому рівні вашого компонента** або у вашому власному Хуці. Ви не можете викликати його в циклах або умовах. Якщо ж є така потреба, то витягніть новий компонент та перемістіть в нього стан.
45+
* `useId` — це хук, тож він може викликатись тільки **на верхньому рівні вашого компонента** або у вашому власному хуці. Ви не можете викликати його в циклах або умовах. Якщо ж є така потреба, то витягніть новий компонент та перемістіть в нього стан.
4846
4947
* `useId` **не повинно використовуватись для генерації ключів** у списках. [Ключі повинні генеруватись з ваших даних.](/learn/rendering-lists#where-to-get-your-key)
5048
51-
* `useId` на данний момент не може бути використано в [async Server Components](/reference/rsc/server-components#async-components-with-server-components).
49+
* `useId` наразі не може бути використано в [async Server Components](/reference/rsc/server-components#async-components-with-server-components).
5250
5351
---
5452
@@ -61,7 +59,7 @@ function PasswordField() {
6159
6260
</Pitfall>
6361
64-
### Генеруйте унікальні ID для атрибутів доступності {/*generating-unique-ids-for-accessibility-attributes*/}
62+
### Генерація унікальних ID для атрибутів доступності {/*generating-unique-ids-for-accessibility-attributes*/}
6563
6664
Викликайте `useId` на верхньому рівні вашої компоненти для генерації унікального ID:
6765
@@ -73,7 +71,7 @@ function PasswordField() {
7371
// ...
7472
```
7573
76-
Далі ви можете передати <CodeStep step={1}>generated ID</CodeStep> до різних атрибутів:
74+
Далі ви можете передати <CodeStep step={1}>Згеренрувати ID</CodeStep> до різних атрибутів:
7775
7876
```js [[1, 2, "passwordHintId"], [1, 3, "passwordHintId"]]
7977
<>
@@ -82,9 +80,9 @@ function PasswordField() {
8280
</>
8381
```
8482
85-
**Давайте розглянемо приклади, коли це може бути корисно.**
83+
**Розглянемо приклади, коли це може бути корисно.**
8684
87-
[Атрибути доступності HTML](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) такі як [`aria-describedby`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby) дозволяють зазначити, що два теги пов'язані один з одним. Наприклад, ви можете визначити, що елемент (такий як input) описан іншим компонентом (такий як параграф).
85+
[Атрибути доступності HTML](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) такі як [`aria-describedby`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby) дозволяють зазначити, що два теги пов'язані один з одним. Наприклад, ви можете визначити, що елемент (таким як input) описаний іншим компонентом (таким як параграф).
8886
8987
В звичайному HTML, ви би написали наступне:
9088
@@ -101,7 +99,7 @@ function PasswordField() {
10199
</p>
102100
```
103101
104-
Однак, такий хардкод ID не найкраща практика в React. Компонент може бути зарендерений на сторінці більш ніж один раз — але ID повинні бути унікальні! Замість того, щоб хардкодити ID, зренеруйте унікальне за допомогою `useId`:
102+
Однак, такий хардкод ID не найкраща практика в React. Компонент може бути зарендерений на сторінці більш ніж один раз — але ID повинні бути унікальні! Замість того, щоб хардкодити ID, згенеруйте унікальне за допомогою `useId`:
105103
106104
```js {4,11,14}
107105
import { useId } from 'react';
@@ -118,7 +116,7 @@ function PasswordField() {
118116
/>
119117
</label>
120118
<p id={passwordHintId}>
121-
Пароль повинен буди довжиною не меньш ніж 18 символів
119+
Пароль повинен бути довжиною не меньш ніж 18 символів
122120
</p>
123121
</>
124122
);
@@ -144,7 +142,7 @@ function PasswordField() {
144142
/>
145143
</label>
146144
<p id={passwordHintId}>
147-
Пароль повинен буди довжиною не меньш ніж 18 символів
145+
Пароль повинен бути довжиною не меньш ніж 18 символів
148146
</p>
149147
</>
150148
);
@@ -168,34 +166,33 @@ input { margin: 5px; }
168166
169167
</Sandpack>
170168
171-
[Перегляньте відео](https://www.youtube.com/watch?v=0dNzNcuEuOo), щоб побачити різницю користувацького досвіду з дороміжними технологіями.
169+
[Перегляньте відео](https://www.youtube.com/watch?v=0dNzNcuEuOo), щоб побачити різницю користувацького досвіду з допоміжними технологіями.
172170
173171
<Pitfall>
174172
175-
With [server rendering](/reference/react-dom/server), **`useId` requires an identical component tree on the server and the client**. If the trees you render on the server and the client don't match exactly, the generated IDs won't match.
176-
Разом з [серверним рендерінгом](/reference/react-dom/server), **`useId` потребує ідентичного дерева компонент на сервері та на клієнті**. If the trees you render on the server and the client don't match exactly, the generated IDs won't match.
173+
Разом з [серверним рендерінгом](/reference/react-dom/server), **`useId` потребує ідентичного дерева компонент на сервері та на клієнті**. Якщо дерева, які ви рендерите на сервері та на клієнті не збігаються, то і згенеровані ID не будуть збігатись.
177174
178175
</Pitfall>
179176
180177
<DeepDive>
181178
182-
#### Why is useId better than an incrementing counter? {/*why-is-useid-better-than-an-incrementing-counter*/}
179+
#### Чому використання useId краще за інкрементний лічильник? {/*why-is-useid-better-than-an-incrementing-counter*/}
183180
184-
You might be wondering why `useId` is better than incrementing a global variable like `nextId++`.
181+
Ви можливо зацікавились, чому використання `useId` краще за інкрементацію глобальної змінної, як наприклад `nextId++`.
185182
186-
The primary benefit of `useId` is that React ensures that it works with [server rendering.](/reference/react-dom/server) During server rendering, your components generate HTML output. Later, on the client, [hydration](/reference/react-dom/client/hydrateRoot) attaches your event handlers to the generated HTML. For hydration to work, the client output must match the server HTML.
183+
Початкова перевага в тому, що `useId` React запевняється, що це працює разом із [серверним рендерінгом.](/reference/react-dom/server) Протягом серверного рендерінга, ваш компонент генерує HTML вивід. Пізніше, на стороні клієнта, [гідратація](/reference/react-dom/client/hydrateRoot) прикрипляє обробники подій до згенерованого HTML. Для роботи гідратації, клієнтський вивід має збігатись з серверним HTML.
187184
188-
This is very difficult to guarantee with an incrementing counter because the order in which the Client Components are hydrated may not match the order in which the server HTML was emitted. By calling `useId`, you ensure that hydration will work, and the output will match between the server and the client.
185+
Це складно гарантувати з інкрементацією лічильника, бо порядок в якому Клієнтські Компоненти проходять гідратацію не збігається з порядком в якому серверний HTML був додан. Викликаючи `useId`, ви запевняєтесь, що гідратація буде працювати, та серверний і клієнтський виводи будуть збігатись.
189186
190-
Inside React, `useId` is generated from the "parent path" of the calling component. This is why, if the client and the server tree are the same, the "parent path" will match up regardless of rendering order.
187+
В межах React, `useId` генерується з "батьківського шляху" компоненти, що викликана. Ось чому, якщо клієнтське та серверне дерево однакове, "батьківський шлях" буде збігатись не дивлячись на порядок рендерінгу.
191188
192189
</DeepDive>
193190
194191
---
195192
196-
### Generating IDs for several related elements {/*generating-ids-for-several-related-elements*/}
193+
### Генерація ID для декількох залежних елементів {/*generating-ids-for-several-related-elements*/}
197194
198-
If you need to give IDs to multiple related elements, you can call `useId` to generate a shared prefix for them:
195+
Якщо треба додати ID для декількох залежних елементів, ви можете викликати `useId` для генерації спільного префіксу:
199196
200197
<Sandpack>
201198
@@ -206,11 +203,11 @@ export default function Form() {
206203
const id = useId();
207204
return (
208205
<form>
209-
<label htmlFor={id + '-firstName'}>First Name:</label>
210-
<input id={id + '-firstName'} type="text" />
206+
<label htmlFor={id + '-ім_я'}>Ім'я:</label>
207+
<input id={id + '-ім_я'} type="text" />
211208
<hr />
212-
<label htmlFor={id + '-lastName'}>Last Name:</label>
213-
<input id={id + '-lastName'} type="text" />
209+
<label htmlFor={id + '-прізвище'}>Прізвище:</label>
210+
<input id={id + '-прізвище'} type="text" />
214211
</form>
215212
);
216213
}
@@ -222,20 +219,20 @@ input { margin: 5px; }
222219
223220
</Sandpack>
224221
225-
This lets you avoid calling `useId` for every single element that needs a unique ID.
222+
Це дозволить запобігти виклику `useId` для кожного окремого елементу, якому треба унікальне ID.
226223
227224
---
228225
229-
### Specifying a shared prefix for all generated IDs {/*specifying-a-shared-prefix-for-all-generated-ids*/}
226+
### Визначення спільного префіксу для всіх згенерованих ID {/*specifying-a-shared-prefix-for-all-generated-ids*/}
230227
231-
If you render multiple independent React applications on a single page, pass `identifierPrefix` as an option to your [`createRoot`](/reference/react-dom/client/createRoot#parameters) or [`hydrateRoot`](/reference/react-dom/client/hydrateRoot) calls. This ensures that the IDs generated by the two different apps never clash because every identifier generated with `useId` will start with the distinct prefix you've specified.
228+
Якщо ви рендерите декілька незалежних React застосунків на одній сторінці, передавайте `identifierPrefix` як опцію у ваш виклик [`createRoot`](/reference/react-dom/client/createRoot#parameters) або [`hydrateRoot`](/reference/react-dom/client/hydrateRoot). Це забезпечить те, що ID, згенеровані двома різними застосунками, ніколи не перетнуться, бо кожен ідентифікатор згенерований за допомогою `useId` починається з окремого префіксу, який ви вказали.
232229
233230
<Sandpack>
234231
235232
```html public/index.html
236233
<!DOCTYPE html>
237234
<html>
238-
<head><title>My app</title></head>
235+
<head><title>Мій додаток</title></head>
239236
<body>
240237
<div id="root1"></div>
241238
<div id="root2"></div>
@@ -248,18 +245,18 @@ import { useId } from 'react';
248245
249246
function PasswordField() {
250247
const passwordHintId = useId();
251-
console.log('Generated identifier:', passwordHintId)
248+
console.log('Згенеруй ідентифікатор:', passwordHintId)
252249
return (
253250
<>
254251
<label>
255-
Password:
252+
Пароль:
256253
<input
257-
type="password"
254+
type="пароль"
258255
aria-describedby={passwordHintId}
259256
/>
260257
</label>
261258
<p id={passwordHintId}>
262-
The password should contain at least 18 characters
259+
Пароль повинен бути довжиною не меньш ніж 18 символів
263260
</p>
264261
</>
265262
);
@@ -268,7 +265,7 @@ function PasswordField() {
268265
export default function App() {
269266
return (
270267
<>
271-
<h2>Choose password</h2>
268+
<h2>Оберіть пароль</h2>
272269
<PasswordField />
273270
</>
274271
);
@@ -311,9 +308,9 @@ input { margin: 5px; }
311308
312309
---
313310
314-
### Using the same ID prefix on the client and the server {/*using-the-same-id-prefix-on-the-client-and-the-server*/}
311+
### Використання однакового ID префікса для клієнта та сервера {/*using-the-same-id-prefix-on-the-client-and-the-server*/}
315312
316-
If you [render multiple independent React apps on the same page](#specifying-a-shared-prefix-for-all-generated-ids), and some of these apps are server-rendered, make sure that the `identifierPrefix` you pass to the [`hydrateRoot`](/reference/react-dom/client/hydrateRoot) call on the client side is the same as the `identifierPrefix` you pass to the [server APIs](/reference/react-dom/server) such as [`renderToPipeableStream`.](/reference/react-dom/server/renderToPipeableStream)
313+
Якщо ви [рендерите декілька незалежних React застосунків на одній сторінці](#specifying-a-shared-prefix-for-all-generated-ids), і деякі з цих застосунків відрендерені сервером, запевниться, що `identifierPrefix`, який ви передаєте в [`hydrateRoot`](/reference/react-dom/client/hydrateRoot) викликається на клієнтській стороні, так само як `identifierPrefix`, який ви передаєте в [server APIs](/reference/react-dom/server), наприклад [`renderToPipeableStream`.](/reference/react-dom/server/renderToPipeableStream)
317314
318315
```js
319316
// Server
@@ -337,4 +334,4 @@ const root = hydrateRoot(
337334
);
338335
```
339336
340-
You do not need to pass `identifierPrefix` if you only have one React app on the page.
337+
Немає потреби передавати `identifierPrefix`, якщо ви маєте тільки один React застосунок на сторінці.

0 commit comments

Comments
 (0)