Skip to content

Commit d50d253

Browse files
ltlaitoffalinkedd
andauthored
Apply suggestions from code review by @alinkedd
Co-authored-by: Alina Listunova <[email protected]>
1 parent 1d30307 commit d50d253

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

Diff for: src/content/learn/passing-props-to-a-component.md

+19-19
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ title: Передача пропсів до компонента
2020

2121
## Знайомі пропси {/*familiar-props*/}
2222

23-
Пропси — це інформація, яку ви передаєте до тегу JSX. Наприклад, `className`, `src`, `alt`, `width` та `height` деякі з пропсів, які ви можете передати до тегу `<img>`:
23+
Пропси — це інформація, яку ви передаєте до тегу JSX. Наприклад, `className`, `src`, `alt`, `width` та `height` деякі з пропсів, які ви можете передати до тегу `<img>`:
2424

2525
<Sandpack>
2626

@@ -100,7 +100,7 @@ function Avatar({ person, size }) {
100100
}
101101
```
102102

103-
Додайте деяку логіку до `Avatar`, яка використовує пропси `person` та `size` для відображення і готово.
103+
Додайте трохи логіки до `Avatar`, яка використовує пропси `person` та `size` для відображення, і готово.
104104

105105
Тепер ви можете налаштувати `Avatar` для відображення багатьма різними способами з різними пропсами. Спробуйте змінити значення!
106106

@@ -170,7 +170,7 @@ body { min-height: 120px; }
170170

171171
Props дозволяють вам думати про батьківські та дочірні компоненти незалежно. Наприклад, ви можете змінити проп `person` або `size` всередині `Profile`, не думаючи про те, як `Avatar` використовує їх. Аналогічно, ви можете змінити спосіб використання `Avatar` цих пропсів, не звертаючи уваги на `Profile`.
172172

173-
Ви можете уявляти пропси як "ручки", які ви можете налаштовувати. Вони виконують ту саму роль, що і аргументи для функцій - насправді, пропси _є_ єдиним аргументом вашого компонента! Функції компонентів React приймають один аргумент - об'єкт `props`:
173+
Уявіть пропси як «ручки регулювання», які ви можете налаштовувати. Вони виконують ту саму роль, що і аргументи для функцій насправді, пропси _є_ єдиним аргументом вашого компонента! Функції компонентів React приймають один аргумент об'єкт `props`:
174174

175175
```js
176176
function Avatar(props) {
@@ -251,11 +251,11 @@ function Profile(props) {
251251

252252
Це передає всі пропси `Profile` до `Avatar` без перерахування кожного з їх імен.
253253

254-
**Використовуйте синтаксис spread з обережністю.** Якщо ви використовуєте його в кожному другому компоненті щось пішло не так. Часто це означає, що вам слід розбити ваші компоненти і передавати дітей як JSX. Детальніше про це далі!
254+
**Використовуйте синтаксис spread з обережністю.** Якщо ви використовуєте його в кожному наступному компоненті, то щось пішло не так. Часто це свідчить про те, що вам слід розбити компоненти і передавати дітей як JSX. Детальніше про це далі!
255255

256256
## Передача JSX як дітей {/*passing-jsx-as-children*/}
257257

258-
Вкладення вбудованих тегів браузера є звичайним ділом:
258+
Вкладення вбудованих тегів браузера є звичайною справою:
259259

260260
```js
261261
<div>
@@ -271,7 +271,7 @@ function Profile(props) {
271271
</Card>
272272
```
273273

274-
Коли ви вкладаєте вміст всередині тегу JSX, батьківський компонент отримує цей вміст у властивості з назвою `children`. Наприклад, компонент `Card` нижче отримає проп `children`, встановлену на `<Avatar />` і відображатиме його в обгортковому div:
274+
Коли ви вкладаєте вміст всередині тегу JSX, батьківський компонент отримує цей вміст у властивості з назвою `children`. Наприклад, компонент `Card` нижче отримає проп `children` зі значенням `<Avatar />` і відображатиме його в обгортковому div:
275275

276276
<Sandpack>
277277

@@ -347,11 +347,11 @@ export function getImageUrl(person, size = 's') {
347347

348348
</Sandpack>
349349

350-
Спробуйте замінити `<Avatar>` всередині `<Card>` на деякий текст, щоб побачити, як компонент `Card` може обгорнути будь-який вкладений вміст. Він не потребує "знати", що саме рендериться всередині нього. Ви ще побачите цей гнучкий шаблон в багатьох місцях.
350+
Спробуйте замінити `<Avatar>` всередині `<Card>` на деякий текст, щоб побачити, як компонент `Card` може обгорнути будь-який вкладений вміст. Він не потребує "знати", що саме рендериться всередині нього. Ви ще побачите цей гнучкий шаблон у багатьох місцях.
351351

352352
Ви можете уявляти компонент з пропом `children` як компонент з "отвіром", який може бути "заповнений" батьківськими компонентами з довільним JSX. Ви часто будете використовувати властивість `children` для візуальних обгорток: панелей, сіток і т.д.
353353

354-
<Illustration src="/images/docs/illustrations/i_children-prop.png" alt='Подібна до головоломки плитка Card з слотами для "дочірніх" шматочків, наприклад текст або Avatar' />
354+
<Illustration src="/images/docs/illustrations/i_children-prop.png" alt='Подібна до головоломки плитка Card зі слотами для "дочірніх" шматочків, наприклад текст або Avatar' />
355355

356356
## Як пропси змінюються з часом {/*how-props-change-over-time*/}
357357

@@ -409,19 +409,19 @@ export default function App() {
409409

410410
Цей приклад показує, що **компонент може отримувати різні пропси з часом**. Пропси не завжди є статичними! Тут проп `time` змінюється кожну секунду, а проп `color` змінюється, коли ви вибираєте інший колір. Пропси відображають дані компонента в будь-який момент часу, а не лише на початку.
411411

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 звільнить пам'ять, яку вони займали.
413413

414-
**Не намагайтеся «змінювати пропси»**. Коли вам потрібно реагувати на введення користувача (наприклад, змінювати вибраний колір), вам потрібно «встановити стан», про що ви можете дізнатися в [Стан: Пам'ять компонента.](/learn/state-a-components-memory)
414+
**Не намагайтеся «змінювати пропси»**. Щоб реагувати на введення користувача (наприклад, змінювати вибраний колір), вам потрібно «встановити стан», про що ви можете дізнатися у розділі [Стан: Пам'ять компонента.](/learn/state-a-components-memory)
415415

416416
<Recap>
417417

418-
* Щоб передати пропси, додайте їх до JSX, так само, як ви робите з атрибутами HTML.
418+
* Щоб передати пропси, додайте їх до JSX подібно до атрибутів HTML.
419419
* Щоб прочитати пропси, використовуйте синтаксис деструктуризації `function Avatar({ person, size })`.
420420
* Ви можете вказати значення за замовчуванням, наприклад, `size = 100`, яке використовується для відсутніх та `undefined` пропсів.
421421
* Ви можете передати всі пропси JSX за допомогою синтаксису розширення `<Avatar {...props} />`, але не зловживайте цим!
422422
* Вкладений JSX, наприклад `<Card><Avatar /></Card>`, буде виглядати як проп `children` компонента `Card`.
423423
* Пропси в момент часу можуть бути використані тільки для читання: кожен рендер отримує нову версію пропсів.
424-
* Ви не можете змінювати пропси. Коли вам потрібна взаємодія, вам потрібно встановити стан.
424+
* Ви не можете змінювати пропси. Для інтерактивності використовуйте стан.
425425

426426
</Recap>
427427

@@ -524,7 +524,7 @@ li { margin: 5px; }
524524

525525
<Hint>
526526

527-
Почніть з винесення розмітки для одного з вчених. Потім знайдіть частини, які не відповідають йому в другому прикладі, і зробіть їх налаштовуваними за допомогою пропсів.
527+
Почніть з винесення розмітки для одного з вчених. Потім знайдіть частини, які не відповідають їй у другому прикладі, і зробіть їх налаштовуваними за допомогою пропсів.
528528

529529
</Hint>
530530

@@ -630,9 +630,9 @@ li { margin: 5px; }
630630

631631
</Sandpack>
632632

633-
Зверніть увагу, якщо `awards` є масивом, вам не потрібен окремий проп `awardCount`. Тоді ви можете використовувати `awards.length`, щоб підрахувати кількість нагород. Пам'ятайте, що пропси можуть приймати будь-які значення, включаючи масиви!
633+
Зверніть увагу: якщо `awards` є масивом, вам не потрібний окремий проп `awardCount`. У цьому випадку ви можете використовувати `awards.length`, щоб підрахувати кількість нагород. Пам'ятайте, що пропси можуть приймати будь-які значення, включаючи масиви!
634634

635-
Ще одне рішення, яке більше схоже на попередні приклади на цій сторінці, полягає в тому, щоб групувати всю інформацію про людину в один об'єкт і передавати цей об'єкт як один проп:
635+
Ще одне рішення, яке більш схоже на попередні приклади на цій сторінці, полягає в тому, щоб групувати всю інформацію про людину в один об'єкт і передавати цей об'єкт як один проп:
636636

637637
<Sandpack>
638638

@@ -733,9 +733,9 @@ li { margin: 5px; }
733733

734734
#### Налаштування розміру зображення на основі пропу {/*adjust-the-image-size-based-on-a-prop*/}
735735

736-
У цьому прикладі `Avatar` отримує числовий проп `size`, який визначає ширину та висоту елемента `<img>`. У цьому прикладі проп `size` встановлено на `40`. Однак, якщо ви відкриєте зображення в новій вкладці, ви помітите, що саме зображення більше (`160` пікселів). Розмір реального зображення визначається розміром ескізу, який ви запитуєте.
736+
У цьому прикладі компонент `Avatar` отримує числовий проп `size`, який визначає ширину та висоту елемента `<img>`. Для пропу `size` задано значення `40`. Однак, якщо ви відкриєте зображення в новій вкладці, ви помітите, що саме зображення є більшим (`160` пікселів). Справжній розмір зображення визначається розміром ескізу, який ви запитуєте.
737737

738-
Змініть компонент `Avatar`, щоб він запитував найближчий розмір зображення на основі пропу `size`. Зокрема, якщо `size` менше `90`, передайте `'s'` ("малий(small)") замість `'b'` ("великий(big)") до функції `getImageUrl`. Переконайтеся, що ваші зміни працюють, рендеруючи аватари з різними значеннями пропу `size` та відкриваючи зображення в новій вкладці.
738+
Змініть компонент `Avatar`, щоб він запитував найближчий розмір зображення на основі пропу `size`. Зокрема, якщо `size` менше `90`, передайте `'s'` (від англ. «small» — малий) замість `'b'` (від англ. «big» — великий) у функцію `getImageUrl`. Переконайтеся, що ваші зміни працюють, виконуючи рендер аватарів з різними значеннями пропу `size` та відкриваючи зображення в новій вкладці.
739739

740740
<Sandpack>
741741

@@ -786,7 +786,7 @@ export function getImageUrl(person, size) {
786786

787787
<Solution>
788788

789-
Ось як ви можете з цим справитися:
789+
Ось як ви можете з цим упоратися:
790790

791791
<Sandpack>
792792

@@ -848,7 +848,7 @@ export function getImageUrl(person, size) {
848848

849849
</Sandpack>
850850

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):
852852

853853
<Sandpack>
854854

0 commit comments

Comments
 (0)