PassFront
  1. PassFront
  2. База знаний
  3. Жизненный цикл

Что такое жизненный цикл компонента в 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-функцией.

Другие вопросы раздела