Итоги
В этом уроке вы узнали, что:
- Пропсы передают данные от родителя компоненту. Они записываются как атрибуты,
<BandCard name="Ночные поезда" stage="Главная сцена" />, а React передаёт их компоненту одним объектом,props. - Компоненты деструктурируют пропсы в параметрах:
function BandCard({ name, stage }). Названия должны совпадать точно. Проп, который никто не передал, равенundefined, и React ничего для него не показывает. - Текст пишется в кавычках, любое другое значение — в фигурных скобках:
likes={128},headliner={true}или простоheadlinerдляtrue. Передreturnкомпонент может выполнять любой JavaScript, напримерif, выбирающий класс. - Проп может быть объектом,
band={bands[0]}, который читается какband.name, или массивом,days={["Пятница", "Суббота"]}. - Значение по умолчанию заменяет отсутствующий проп:
{ stage = "Сцена уточняется" }. Оно используется только тогда, когда проп равенundefined. - То, что находится между тегами компонента, — это проп
children:<Card>…</Card>может обернуть любое содержимое. - Пропсы только для чтения. Решает родитель, а компонент никогда не меняет свои пропсы; значение, полученное из них, записывается в новую переменную.
В следующем уроке, «Списки и условия», вы будете делать карточку для каждой группы из массива с помощью map вместо того, чтобы писать карточки по одной, и показывать части карточки только при выполнении условия.
А пока немного практики: объявления для гостей фестиваля. Файл Notice.jsx пуст, и компонент вы напишете сами.
Задание
- 1
В
Notice.jsxнапишите компонентNoticeс экспортом по умолчанию, который показывает своиchildrenв абзаце<p className="notice">. ВApp.jsxпокажите два объявления под заголовком:Ворота открываются в 14:00.иПокажите билет на телефоне. - 2
Добавьте
Noticeпропtypeсо значением по умолчанию"info"и задайте абзацу классnoticeи тип:className={`notice ${type}`}. Два объявления станут синими.Затем добавьте третье объявление с
type="warning":Стеклянные бутылки на фестиваль нельзя.Оно красное.