Передай колбэк через пропсы и вызови его при клике на кнопку. Без состояния — только пропсы и обработчик.
Практика рукоблудия! Часто нужно навешивать на кнопку действие, переданное сверху. Задача: принять колбэк и вызвать его по клику.
ActionButton с пропсами:
onClick: () => void — обработчик клика (обязателен),label: string — текст кнопки (по умолчанию 'Click').<button> с заданным текстом.onClick.useState — достаточно пропсов и обработчика.В App должно быть несколько кнопок с разными действиями.
Финальный результат должен быть таким:

<button onClick={onClick}>.function ActionButton({ onClick, label = 'Click' }).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>
);
}Почему это работает: Обработчик клика приходит из родителя и вызывается кнопкой. Компонент остаётся простым, предсказуемым и легко тестируется.
Передай колбэк через пропсы и вызови его при клике на кнопку. Без состояния — только пропсы и обработчик.
Практика рукоблудия! Часто нужно навешивать на кнопку действие, переданное сверху. Задача: принять колбэк и вызвать его по клику.
ActionButton с пропсами:
onClick: () => void — обработчик клика (обязателен),label: string — текст кнопки (по умолчанию 'Click').<button> с заданным текстом.onClick.useState — достаточно пропсов и обработчика.В App должно быть несколько кнопок с разными действиями.
Финальный результат должен быть таким:

<button onClick={onClick}>.function ActionButton({ onClick, label = 'Click' }).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>
);
}Почему это работает: Обработчик клика приходит из родителя и вызывается кнопкой. Компонент остаётся простым, предсказуемым и легко тестируется.
Редактор кода намеренно скрыт на мобильном.
Поверь, так лучше: я оберегаю тебя от искушения писать код в неидеальных условиях. Маленький экран и виртуальная клавиатура — не лучшие помощники для программиста.
📖 Сейчас: Изучи задачу, продумай решение. Действуй как стратег.
💻 Потом: Сядь за компьютер, открой сайт и реализуй все идеи с комфортом. Действуй как код-джедай!