Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: react, hooks

Почему хуки заменили классовые компоненты? Какие проблемы решили?

Вопрос проверяет понимание преимуществ хуков перед классовыми компонентами и их роли в современном React.

Короткий ответ

Хуки решили проблемы сложности классов, дублирования кода и логики. Они упрощают переиспользование кода, делают его более читаемым и позволяют использовать состояние и жизненный цикл в функциональных компонентах.

Длинный ответ

Проблемы классовых компонентов:

  1. Сложность: Большой объем кода из-за this, методов жизненного цикла и bind.

  2. Повторение логики: Например, подписки/отписки в componentDidMount и componentWillUnmount.

  3. Сложность тестирования: Классы сложнее изолировать и тестировать.

Как хуки решили эти проблемы:

  • useState: Позволяет использовать состояние без классов.

  • useEffect: Объединяет componentDidMount, componentDidUpdate, componentWillUnmount.

  • Кастомные хуки: Позволяют переиспользовать логику между компонентами.

Пример:

// Классовый компонент
class Counter extends React.Component {
  state = { count: 0 };
  increment = () => this.setState({ count: this.state.count + 1 });
  render() { return <button onClick={this.increment}>{this.state.count}</button>; }
}

// Функциональный компонент с хуками
function Counter() {
  const [count, setCount] = useState(0);
  const increment = () => setCount(count + 1);
  return <button onClick={increment}>{count}</button>;
}

Вывод:
Хуки упростили разработку, уменьшили количество кода и улучшили переиспользование логики.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • React

    React

Ключевые слова

#react

#hooks

Подпишись на React Developer в телеграм