Что такое жизненный цикл компонента в React?
Жизненный цикл
Жизненный цикл — это этапы, которые компонент проходит от появления в DOM до удаления: монтирование, обновление, размонтирование.
Три фазы
- Монтирование (mount) — компонент создаётся и вставляется в DOM. Здесь загружают данные, ставят подписки.
- Обновление (update) — компонент перерендеривается из-за изменения props или state. Здесь реагируют на изменения (например, перезапрашивают данные при смене id).
- Размонтирование (unmount) — компонент удаляется из DOM. Здесь чистят ресурсы: таймеры, подписки, соединения.
В классовых компонентах
componentDidMount()— после вставки в DOM.componentDidUpdate(prevProps, prevState)— после обновления.componentWillUnmount()— перед удалением.- Дополнительно:
shouldComponentUpdate(контроль перерендера),getDerivedStateFromProps,getSnapshotBeforeUpdate.
В функциональных компонентах
Жизненный цикл покрывается useEffect:
useEffect(() => {
const socket = connect(roomId); // mount + при изменении roomId
return () => socket.disconnect(); // cleanup: unmount + перед перезапуском
}, [roomId]);useEffect(fn, [])≈ componentDidMount.useEffect(fn, [deps])≈ componentDidUpdate по конкретным данным.- Возвращаемая cleanup-функция ≈ componentWillUnmount.
Нюансы
- Аналогия с методами классов приблизительная: эффекты мыслятся не «этапами жизни», а синхронизацией с внешней системой — эффект запускается, когда данные изменились, и чистится перед перезапуском.
- Порядок при обновлении: рендер → коммит в DOM → cleanup старого эффекта → новый эффект.
Коротко для собеседования
Жизненный цикл — монтирование, обновление, размонтирование. В классах — componentDidMount / componentDidUpdate / componentWillUnmount, в функциональных компонентах всё выражается через useEffect с массивом зависимостей и cleanup-функцией.