Вопрос проверяет понимание преимуществ хуков перед классовыми компонентами и их роли в современном React.
Хуки решили проблемы сложности классов, дублирования кода и логики. Они упрощают переиспользование кода, делают его более читаемым и позволяют использовать состояние и жизненный цикл в функциональных компонентах.
Проблемы классовых компонентов:
Сложность: Большой объем кода из-за this, методов жизненного цикла и bind.
Повторение логики: Например, подписки/отписки в componentDidMount и componentWillUnmount.
Сложность тестирования: Классы сложнее изолировать и тестировать.
Как хуки решили эти проблемы:
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>;
}Вывод:
Хуки упростили разработку, уменьшили количество кода и улучшили переиспользование логики.