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
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -192,7 +192,7 @@ function Avatar({ person, size }) {
192
192
}
193
193
```
194
194
195
-
Такой синтаксис называется ["деструктурирующим присваиванием" или "деструктуризацией"](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8) и равнозначен чтению свойств из параметра функции:
195
+
Такой синтаксис называется [«деструктурирующим присваиванием» или «деструктуризацией»](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8) и равнозначен чтению свойств из параметра функции:
Попробуйте поменять `<Avatar>` внутри `<Card>` на любой текст и посмотреть как компонент `Card` оборачивает содержимое. Ему необязательно "знать" что рендерится внутри него. Вы ещё увидите множество применений этого гибкого паттерна.
350
+
Попробуйте поменять `<Avatar>` внутри `<Card>` на любой текст и посмотреть как компонент `Card` оборачивает содержимое. Ему необязательно «знать» что рендерится внутри него. Вы ещё увидите множество применений этого гибкого паттерна.
351
351
352
-
Вы можете представить себе компонент с пропом `children` в виде "эклера", в который родительский компонент "добавляет начинку" через JSX. Вы будете часто использовать проп `children` для компонентов-обёрток: панелей, гридов и т.д.
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,14 +409,14 @@ export default function App() {
409
409
410
410
Этот пример показывает, что **компонент может получать различные значения пропсов в разные моменты времени.** Пропсы не всегда статические! В этом примере проп `time` меняется каждую секунду, а проп `color` меняется при выборе цвета в меню. Пропсы отражают данные компонента в конкретный момент, а не только в начале его существования.
411
411
412
-
Однако, пропсы [неизменяемы (immutable)](https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D1%8F%D0%B5%D0%BC%D1%8B%D0%B9_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82) —- термин в информатике, обозначающий объект, который не может быть изменён после создания. Когда компоненту нужно поменять его пропсы (например, в результате действий пользователя или обновления данных), он должен "спросить" у родительского компонента _другие пропсы_ -— новый объект! Старые пропсы окажутся ненужными, и в итоге движок JavaScript освободит память, которую они занимали.
412
+
Однако, пропсы [неизменяемы (immutable)](https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D1%8F%D0%B5%D0%BC%D1%8B%D0%B9_%D0%BE%D0%B1%D1%8A%D0%B5%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
418
* Чтобы передать пропсы, добавьте их в JSX, по аналогии с HTML-атрибутами.
* Чтобы прочитать пропсы, используйте деструктуризацию`function Avatar({ person, size })`.
420
420
* Вы можете определить значение по умолчанию `size = 100`, в случае если проп принимает `undefined` или пропущен.
421
421
* Вы можете передать все пропсы в другой компонент `<Avatar {...props} />` с помощью оператора расширения, но не злоупотребляйте этой возможностью!
422
422
* Вложенный JSX, например `<Card><Avatar /></Card>`, будет передан в компонент `Card` в специальном пропе с именем `children`.
@@ -735,7 +735,7 @@ li { margin: 5px; }
735
735
736
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`: аватары должны отображаться, а реальный размер изображения в отдельной вкладке будет отличаться.
0 commit comments