🟨 React
Легкая
🕐 1 story point

React: Условное приветствие

Сделай условный рендеринг: компонент Greeting выводит “Привет, user” при авторизации и “Войдите” — иначе. Только без useState.

Александр, тимлид React-стажировки

Отличная разминка! Нам часто нужно показывать разные сообщения в зависимости от статуса пользователя. Твоя задача — сделать это чисто и просто, без состояния, только на пропсах.

Что нужно сделать

  1. Реализуй компонент Greeting, который принимает пропсы:
    • isAuthenticated: boolean — признак авторизации,
    • name: string — имя пользователя (по умолчанию 'user').
  2. Если isAuthenticated === true — показывай текст: Привет, {name}.
  3. Если isAuthenticated === false — показывай текст: Войдите.
  4. Не используй useState — в этой задаче достаточно условного рендера по пропсам.

Финальный вид

Компонент должен корректно показывать оба состояния: для авторизованного пользователя и для гостя.

Финальный результат должен быть таким: Финальный результат

💡 Подсказка
  • Используй тернарный оператор: {isAuthenticated ? 'Привет, ' + name : 'Войдите'}.
  • Можно деструктурировать пропсы с дефолтом: function Greeting({ isAuthenticated, name = 'user' }).
  • Состояние здесь не нужно — всё основано на приходящих данных.
  • Документация: react.dev/learn/conditional-rendering
👀 Решение
import React from 'react';
import './styles.css';
 
export function Greeting({ isAuthenticated, name = 'user' }) {
  return (
    <div className="greeting-card" data-testid="greeting">
      <p className="greeting-text">
        {isAuthenticated ? `Привет, ${name}` : 'Войдите'}
      </p>
    </div>
  );
}
 
export default function App() {
  return (
    <main className="challenge-container">
      <section>
        <div className="greeting-card">
          <Greeting isAuthenticated={true} name="Александр" />
        </div>
        <div className="greeting-card" style={{ marginTop: 16 }}>
          <Greeting isAuthenticated={false} />
        </div>
      </section>
    </main>
  );
}

Почему это работает: Логика построена на пропсах, а не на состоянии. isAuthenticated определяет, какой текст отобразить, а name используется только в ветке авторизации. За счёт тернарного оператора компонент остаётся простым, предсказуемым и легко тестируемым.

🧑‍💻 Это не баг! Это фича!

Редактор кода намеренно скрыт на мобильном.

Поверь, так лучше: я оберегаю тебя от искушения писать код в неидеальных условиях. Маленький экран и виртуальная клавиатура — не лучшие помощники для программиста.

📖 Сейчас: Изучи задачу, продумай решение. Действуй как стратег.

💻 Потом: Сядь за компьютер, открой сайт и реализуй все идеи с комфортом. Действуй как код-джедай!