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

React: Колбэк по клику

Передай колбэк через пропсы и вызови его при клике на кнопку. Без состояния — только пропсы и обработчик.

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

Практика рукоблудия! Часто нужно навешивать на кнопку действие, переданное сверху. Задача: принять колбэк и вызвать его по клику.

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

  1. Реализуй ActionButton с пропсами:
    • onClick: () => void — обработчик клика (обязателен),
    • label: string — текст кнопки (по умолчанию 'Click').
  2. Рендери <button> с заданным текстом.
  3. По клику вызывай onClick.
  4. Не используй useState — достаточно пропсов и обработчика.

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

В App должно быть несколько кнопок с разными действиями.

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

💡 Подсказка
  • Передай обработчик напрямую: <button onClick={onClick}>.
  • Деструктурируй пропсы с дефолтом: function ActionButton({ onClick, label = 'Click' }).
  • Компонент статeless — вся логика в родителе.
  • Документация: react.dev/learn/responding-to-events
👀 Решение
import React from 'react';
import './styles.css';
 
export function ActionButton({ onClick, label = 'Click' }) {
  return (
    <button className="action-button" onClick={onClick}>
      {label}
    </button>
  );
}
 
export default function App() {
  function handleGreet() {
    alert('Привет!');
  }
  function handleSignIn() {
    alert('Входим...');
  }
  return (
    <main className="challenge-container">
      <section>
        <div className="action-card">
          <ActionButton onClick={handleGreet} label="Поздороваться" />
        </div>
        <div className="action-card" style={{ marginTop: 16 }}>
          <ActionButton onClick={handleSignIn} label="Войти" />
        </div>
        <div className="action-card" style={{ marginTop: 16 }}>
          <ActionButton onClick={() => {}} />
        </div>
      </section>
    </main>
  );
}

Почему это работает: Обработчик клика приходит из родителя и вызывается кнопкой. Компонент остаётся простым, предсказуемым и легко тестируется.

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

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

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

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

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