You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/learn/passing-props-to-a-component.md
+19-19
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ title: Передача пропсів до компонента
20
20
21
21
## Знайомі пропси {/*familiar-props*/}
22
22
23
-
Пропси — це інформація, яку ви передаєте до тегу JSX. Наприклад, `className`, `src`, `alt`, `width` та `height` деякі з пропсів, які ви можете передати до тегу `<img>`:
23
+
Пропси — це інформація, яку ви передаєте до тегу JSX. Наприклад, `className`, `src`, `alt`, `width` та `height`— деякі з пропсів, які ви можете передати до тегу `<img>`:
24
24
25
25
<Sandpack>
26
26
@@ -100,7 +100,7 @@ function Avatar({ person, size }) {
100
100
}
101
101
```
102
102
103
-
Додайте деяку логіку до `Avatar`, яка використовує пропси `person` та `size` для відображення і готово.
103
+
Додайте трохи логіки до `Avatar`, яка використовує пропси `person` та `size` для відображення, і готово.
104
104
105
105
Тепер ви можете налаштувати `Avatar` для відображення багатьма різними способами з різними пропсами. Спробуйте змінити значення!
106
106
@@ -170,7 +170,7 @@ body { min-height: 120px; }
170
170
171
171
Props дозволяють вам думати про батьківські та дочірні компоненти незалежно. Наприклад, ви можете змінити проп `person` або `size` всередині `Profile`, не думаючи про те, як `Avatar` використовує їх. Аналогічно, ви можете змінити спосіб використання `Avatar` цих пропсів, не звертаючи уваги на `Profile`.
172
172
173
-
Ви можете уявляти пропси як "ручки", які ви можете налаштовувати. Вони виконують ту саму роль, що і аргументи для функцій - насправді, пропси _є_ єдиним аргументом вашого компонента! Функції компонентів React приймають один аргумент - об'єкт `props`:
173
+
Уявіть пропси як «ручки регулювання», які ви можете налаштовувати. Вони виконують ту саму роль, що і аргументи для функцій — насправді, пропси _є_ єдиним аргументом вашого компонента! Функції компонентів React приймають один аргумент — об'єкт `props`:
174
174
175
175
```js
176
176
functionAvatar(props) {
@@ -251,11 +251,11 @@ function Profile(props) {
251
251
252
252
Це передає всі пропси `Profile` до `Avatar` без перерахування кожного з їх імен.
253
253
254
-
**Використовуйте синтаксис spread з обережністю.** Якщо ви використовуєте його в кожному другому компонентіщось пішло не так. Часто це означає, що вам слід розбити ваші компоненти і передавати дітей як JSX. Детальніше про це далі!
254
+
**Використовуйте синтаксис spread з обережністю.** Якщо ви використовуєте його в кожному наступному компоненті, то щось пішло не так. Часто це свідчить про те, що вам слід розбити компоненти і передавати дітей як JSX. Детальніше про це далі!
255
255
256
256
## Передача JSX як дітей {/*passing-jsx-as-children*/}
257
257
258
-
Вкладення вбудованих тегів браузера є звичайним ділом:
258
+
Вкладення вбудованих тегів браузера є звичайною справою:
259
259
260
260
```js
261
261
<div>
@@ -271,7 +271,7 @@ function Profile(props) {
271
271
</Card>
272
272
```
273
273
274
-
Коли ви вкладаєте вміст всередині тегу JSX, батьківський компонент отримує цей вміст у властивості з назвою `children`. Наприклад, компонент `Card` нижче отримає проп `children`, встановлену на`<Avatar />` і відображатиме його в обгортковому div:
274
+
Коли ви вкладаєте вміст всередині тегу JSX, батьківський компонент отримує цей вміст у властивості з назвою `children`. Наприклад, компонент `Card` нижче отримає проп `children` зі значенням`<Avatar />` і відображатиме його в обгортковому div:
Спробуйте замінити `<Avatar>` всередині `<Card>` на деякий текст, щоб побачити, як компонент `Card` може обгорнути будь-який вкладений вміст. Він не потребує "знати", що саме рендериться всередині нього. Ви ще побачите цей гнучкий шаблон в багатьох місцях.
350
+
Спробуйте замінити `<Avatar>` всередині `<Card>` на деякий текст, щоб побачити, як компонент `Card` може обгорнути будь-який вкладений вміст. Він не потребує "знати", що саме рендериться всередині нього. Ви ще побачите цей гнучкий шаблон у багатьох місцях.
351
351
352
352
Ви можете уявляти компонент з пропом `children` як компонент з "отвіром", який може бути "заповнений" батьківськими компонентами з довільним JSX. Ви часто будете використовувати властивість `children` для візуальних обгорток: панелей, сіток і т.д.
353
353
354
-
<Illustrationsrc="/images/docs/illustrations/i_children-prop.png"alt='Подібна до головоломки плитка Card з слотами для "дочірніх" шматочків, наприклад текст або Avatar' />
354
+
<Illustrationsrc="/images/docs/illustrations/i_children-prop.png"alt='Подібна до головоломки плитка Card зі слотами для "дочірніх" шматочків, наприклад текст або Avatar' />
355
355
356
356
## Як пропси змінюються з часом {/*how-props-change-over-time*/}
357
357
@@ -409,19 +409,19 @@ export default function App() {
409
409
410
410
Цей приклад показує, що **компонент може отримувати різні пропси з часом**. Пропси не завжди є статичними! Тут проп `time` змінюється кожну секунду, а проп `color` змінюється, коли ви вибираєте інший колір. Пропси відображають дані компонента в будь-який момент часу, а не лише на початку.
411
411
412
-
Однак, пропси є [незмінними(immutable)](https://uk.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B7%D0%BC%D1%96%D0%BD%D0%BD%D0%B8%D0%B9_%D0%BE%D0%B1%27%D1%94%D0%BA%D1%82) — термін з комп'ютерних наук, що означає "незмінні". Коли компоненту потрібно змінити свої пропси (наприклад, відповідно до взаємодії користувача або нових даних), він повинен "запитати" свій батьківський компонент передати йому _інші пропси_ — новий об'єкт! Його старі пропси будуть відкинуті, і, врешті-решт, рушій JavaScript звільнить пам'ять, яку вони займали.
412
+
Однак, пропси є [незмінними(immutable)](https://uk.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B7%D0%BC%D1%96%D0%BD%D0%BD%D0%B8%D0%B9_%D0%BE%D0%B1%27%D1%94%D0%BA%D1%82). Коли компоненту потрібно змінити свої пропси (наприклад, відповідно до взаємодії користувача або нових даних), він повинен «попросити» свій батьківський компонент передати йому _інші пропси_ — новий об'єкт! Його старі пропси будуть відкинуті, і, врешті-решт, рушій JavaScript звільнить пам'ять, яку вони займали.
413
413
414
-
**Не намагайтеся «змінювати пропси»**. Коли вам потрібно реагувати на введення користувача (наприклад, змінювати вибраний колір), вам потрібно «встановити стан», про що ви можете дізнатися в[Стан: Пам'ять компонента.](/learn/state-a-components-memory)
414
+
**Не намагайтеся «змінювати пропси»**. Щоб реагувати на введення користувача (наприклад, змінювати вибраний колір), вам потрібно «встановити стан», про що ви можете дізнатися у розділі[Стан: Пам'ять компонента.](/learn/state-a-components-memory)
415
415
416
416
<Recap>
417
417
418
-
* Щоб передати пропси, додайте їх до JSX, так само, як ви робите з атрибутами HTML.
418
+
* Щоб передати пропси, додайте їх до JSX подібно до атрибутів HTML.
* Ви можете вказати значення за замовчуванням, наприклад, `size = 100`, яке використовується для відсутніх та `undefined` пропсів.
421
421
* Ви можете передати всі пропси JSX за допомогою синтаксису розширення `<Avatar {...props} />`, але не зловживайте цим!
422
422
* Вкладений JSX, наприклад `<Card><Avatar /></Card>`, буде виглядати як проп `children` компонента `Card`.
423
423
* Пропси в момент часу можуть бути використані тільки для читання: кожен рендер отримує нову версію пропсів.
424
-
* Ви не можете змінювати пропси. Коли вам потрібна взаємодія, вам потрібно встановити стан.
424
+
* Ви не можете змінювати пропси. Для інтерактивності використовуйте стан.
425
425
426
426
</Recap>
427
427
@@ -524,7 +524,7 @@ li { margin: 5px; }
524
524
525
525
<Hint>
526
526
527
-
Почніть з винесення розмітки для одного з вчених. Потім знайдіть частини, які не відповідають йому в другому прикладі, і зробіть їх налаштовуваними за допомогою пропсів.
527
+
Почніть з винесення розмітки для одного з вчених. Потім знайдіть частини, які не відповідають їй у другому прикладі, і зробіть їх налаштовуваними за допомогою пропсів.
528
528
529
529
</Hint>
530
530
@@ -630,9 +630,9 @@ li { margin: 5px; }
630
630
631
631
</Sandpack>
632
632
633
-
Зверніть увагу, якщо `awards` є масивом, вам не потрібен окремий проп `awardCount`. Тоді ви можете використовувати `awards.length`, щоб підрахувати кількість нагород. Пам'ятайте, що пропси можуть приймати будь-які значення, включаючи масиви!
633
+
Зверніть увагу: якщо `awards` є масивом, вам не потрібний окремий проп `awardCount`. У цьому випадку ви можете використовувати `awards.length`, щоб підрахувати кількість нагород. Пам'ятайте, що пропси можуть приймати будь-які значення, включаючи масиви!
634
634
635
-
Ще одне рішення, яке більше схоже на попередні приклади на цій сторінці, полягає в тому, щоб групувати всю інформацію про людину в один об'єкт і передавати цей об'єкт як один проп:
635
+
Ще одне рішення, яке більш схоже на попередні приклади на цій сторінці, полягає в тому, щоб групувати всю інформацію про людину в один об'єкт і передавати цей об'єкт як один проп:
636
636
637
637
<Sandpack>
638
638
@@ -733,9 +733,9 @@ li { margin: 5px; }
733
733
734
734
#### Налаштування розміру зображення на основі пропу {/*adjust-the-image-size-based-on-a-prop*/}
735
735
736
-
У цьому прикладі `Avatar` отримує числовий проп `size`, який визначає ширину та висоту елемента `<img>`. У цьому прикладі проп `size`встановлено на`40`. Однак, якщо ви відкриєте зображення в новій вкладці, ви помітите, що саме зображення більше (`160` пікселів). Розмір реального зображення визначається розміром ескізу, який ви запитуєте.
736
+
У цьому прикладі компонент `Avatar` отримує числовий проп `size`, який визначає ширину та висоту елемента `<img>`. Для пропу `size`задано значення`40`. Однак, якщо ви відкриєте зображення в новій вкладці, ви помітите, що саме зображення є більшим (`160` пікселів). Справжній розмір зображення визначається розміром ескізу, який ви запитуєте.
737
737
738
-
Змініть компонент `Avatar`, щоб він запитував найближчий розмір зображення на основі пропу `size`. Зокрема, якщо `size` менше `90`, передайте `'s'` ("малий(small)") замість `'b'` ("великий(big)") до функції`getImageUrl`. Переконайтеся, що ваші зміни працюють, рендеруючи аватари з різними значеннями пропу `size` та відкриваючи зображення в новій вкладці.
738
+
Змініть компонент `Avatar`, щоб він запитував найближчий розмір зображення на основі пропу `size`. Зокрема, якщо `size` менше `90`, передайте `'s'` (від англ. «small» — малий) замість `'b'` (від англ. «big» — великий) у функцію`getImageUrl`. Переконайтеся, що ваші зміни працюють, виконуючи рендер аватарів з різними значеннями пропу `size` та відкриваючи зображення в новій вкладці.
739
739
740
740
<Sandpack>
741
741
@@ -786,7 +786,7 @@ export function getImageUrl(person, size) {
786
786
787
787
<Solution>
788
788
789
-
Ось як ви можете з цим справитися:
789
+
Ось як ви можете з цим упоратися:
790
790
791
791
<Sandpack>
792
792
@@ -848,7 +848,7 @@ export function getImageUrl(person, size) {
848
848
849
849
</Sandpack>
850
850
851
-
Ви також можете показати більш чітке зображення для екранів з високою щільністю пікселів, враховуючи[`window.devicePixelRatio`](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio):
851
+
Ви також можете показати більш чітке зображення для екранів з високою щільністю пікселів, ураховуючи[`window.devicePixelRatio`](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio):
0 commit comments