Первый день: сделай так, чтобы компонент
UserCardпринимал имя и email через пропсы и отображал их внутри карточки.
Добро пожаловать в команду! Алекс наконец-то пробил для тебя все доступы и сразу выдает первую задачу. Наша CRM уже хранит данные коллег, осталось отрендерить их в интерфейсе. Твой компонент увидит вся команда, так что доведи карточку до презентабельного вида.
UserCard пропсы name и email, выведи их в заголовке и подписи.App вызови UserCard четыре раза, передав данные для Александра Ермолова, Марины Морозовой, Ильи Лебедева и Ксении Волковой.'Имя пользователя' и email@example.com на случай, если данные не прилетят.map или другие циклы при рендере — просто передай нужные значения вручную.[
{ name: 'Александр Ермолов', email: 'alex@easyadvice.dev' },
{ name: 'Марина Морозова', email: 'marina@easyadvice.dev' },
{ name: 'Илья Лебедев', email: 'ilya@easyadvice.dev' },
{ name: 'Ксения Волкова', email: 'kseniia@easyadvice.dev' }
]Используй эти данные и выведи каждую карточку на отдельном UserCard.
Финальный результат должен быть таким:

function UserCard({ name, email }) { ... }.<UserCard name={member.name} email={member.email} />.teammates по индексу: teammates[0], teammates[1] и т.д. Главное — не используй map, а передай пропсы вручную.{ name = 'Имя пользователя', email = 'email@example.com' }.import React from 'react';
import './styles.css';
const teammates = [
{ id: 1, name: 'Александр Ермолов', email: 'alex@easyadvice.dev' },
{ id: 2, name: 'Марина Морозова', email: 'marina@easyadvice.dev' },
{ id: 3, name: 'Илья Лебедев', email: 'ilya@easyadvice.dev' },
{ id: 4, name: 'Ксения Волкова', email: 'kseniia@easyadvice.dev' },
];
export function UserCard({
name = 'Имя пользователя',
email = 'email@example.com',
}) {
return (
<article className="user-card" data-testid="user-card">
<h2 className="user-card__name">{name}</h2>
<p className="user-card__email">{email}</p>
</article>
);
}
export default function App() {
return (
<main className="challenge-container">
<section className="challenge-cards">
<UserCard name={teammates[0].name} email={teammates[0].email} />
<UserCard name={teammates[1].name} email={teammates[1].email} />
<UserCard name={teammates[2].name} email={teammates[2].email} />
<UserCard name={teammates[3].name} email={teammates[3].email} />
</section>
</main>
);
}Почему это работает: UserCard принимает имя и email через пропсы, поэтому его легко переиспользовать. Мы положили данные в массив teammates, но передаём их вручную в каждый <UserCard />, что соответствует задаче без использования map. Дефолты остаются на случай, если данные не прилетят.
Первый день: сделай так, чтобы компонент
UserCardпринимал имя и email через пропсы и отображал их внутри карточки.
Добро пожаловать в команду! Алекс наконец-то пробил для тебя все доступы и сразу выдает первую задачу. Наша CRM уже хранит данные коллег, осталось отрендерить их в интерфейсе. Твой компонент увидит вся команда, так что доведи карточку до презентабельного вида.
UserCard пропсы name и email, выведи их в заголовке и подписи.App вызови UserCard четыре раза, передав данные для Александра Ермолова, Марины Морозовой, Ильи Лебедева и Ксении Волковой.'Имя пользователя' и email@example.com на случай, если данные не прилетят.map или другие циклы при рендере — просто передай нужные значения вручную.[
{ name: 'Александр Ермолов', email: 'alex@easyadvice.dev' },
{ name: 'Марина Морозова', email: 'marina@easyadvice.dev' },
{ name: 'Илья Лебедев', email: 'ilya@easyadvice.dev' },
{ name: 'Ксения Волкова', email: 'kseniia@easyadvice.dev' }
]Используй эти данные и выведи каждую карточку на отдельном UserCard.
Финальный результат должен быть таким:

function UserCard({ name, email }) { ... }.<UserCard name={member.name} email={member.email} />.teammates по индексу: teammates[0], teammates[1] и т.д. Главное — не используй map, а передай пропсы вручную.{ name = 'Имя пользователя', email = 'email@example.com' }.import React from 'react';
import './styles.css';
const teammates = [
{ id: 1, name: 'Александр Ермолов', email: 'alex@easyadvice.dev' },
{ id: 2, name: 'Марина Морозова', email: 'marina@easyadvice.dev' },
{ id: 3, name: 'Илья Лебедев', email: 'ilya@easyadvice.dev' },
{ id: 4, name: 'Ксения Волкова', email: 'kseniia@easyadvice.dev' },
];
export function UserCard({
name = 'Имя пользователя',
email = 'email@example.com',
}) {
return (
<article className="user-card" data-testid="user-card">
<h2 className="user-card__name">{name}</h2>
<p className="user-card__email">{email}</p>
</article>
);
}
export default function App() {
return (
<main className="challenge-container">
<section className="challenge-cards">
<UserCard name={teammates[0].name} email={teammates[0].email} />
<UserCard name={teammates[1].name} email={teammates[1].email} />
<UserCard name={teammates[2].name} email={teammates[2].email} />
<UserCard name={teammates[3].name} email={teammates[3].email} />
</section>
</main>
);
}Почему это работает: UserCard принимает имя и email через пропсы, поэтому его легко переиспользовать. Мы положили данные в массив teammates, но передаём их вручную в каждый <UserCard />, что соответствует задаче без использования map. Дефолты остаются на случай, если данные не прилетят.
Редактор кода намеренно скрыт на мобильном.
Поверь, так лучше: я оберегаю тебя от искушения писать код в неидеальных условиях. Маленький экран и виртуальная клавиатура — не лучшие помощники для программиста.
📖 Сейчас: Изучи задачу, продумай решение. Действуй как стратег.
💻 Потом: Сядь за компьютер, открой сайт и реализуй все идеи с комфортом. Действуй как код-джедай!