Деструктуризация пропсов
Писать props. перед каждым пропом становится утомительно, когда их в компоненте много. Поэтому в React-коде пропсы обычно достают из объекта прямо в параметрах — с помощью деструктуризации, знакомой вам по курсу JavaScript:
const { name, stage } = band;В параметрах всё так же, только без const и =. Фигурные скобки достают пропсы из объекта, который передаёт React:
export default function BandCard({ name, stage }) {
return (
<article className="card">
<h3>{name}</h3>
<p>{stage}</p>
</article>
);
}Компонент работает как раньше, но короче, а его первая строка сразу говорит, какие пропсы он принимает. Так написаны компоненты в большинстве React-кода и в остальной части этого курса.
Типичные ошибки:
- Забытые фигурные скобки:
function BandCard(name, stage). React передаёт один объект, поэтомуname— это весь объект со всеми пропсами. React не умеет показывать объект, поэтому страница пустая, а консоль пишетObjects are not valid as a React child (found: object with keys {name, stage}). - Запись
props.nameпосле деструктуризации. Никакогоpropsбольше нет, есть толькоname, и консоль пишетReferenceError: props is not defined.
Задание
- 1
Измените
BandCardтак, чтобы он деструктурировал пропсы в параметрах,{ name, stage }, и показывал{name}и{stage}безprops.впереди. Карточки выглядят так же, как раньше. - 2
Добавьте третий проп,
time, — время выступления группы:20:00,18:30и16:00. Добавьте его в деструктуризацию и покажите в абзаце после сцены, через запятую:Главная сцена, 20:00.