Жизненный цикл компонента в React | OTUS

Жизненный цикл компонента в React

Жизненный цикл компонента в React — одна из наиболее важных концепций, которую следует знать. Почему? Потому что понимание жизненного цикла позволит вам правильно обрабатывать события в вашем приложении и обеспечивать корректную передачу данных между компонентами.

Компоненты в React рождаются, решают какую-то задачу и прекращают свое существование. Всё, как у людей, однако жизненные этапы все же несколько отличаются от человеческих. Посмотрим, как они выглядят:

3-1801-291fca.png

Каждый закрашенный горизонтальный прямоугольник на рисунке выше отображает метод жизненного цикла, кроме, разве что «React updates DOM and refs». Столбцы в данном случае отображают различные этапы жизни компонента.

Вообще, компонент способен находиться лишь на одном этапе. Начинается все с монтирования, а продолжается обновлением. То есть компонент обновляется постоянно и происходит это до тех пор, пока он не перейдет на этап размонтирования, где удалится из виртуального DOM.

Методы жизненного цикла дают возможность запускать код в конкретные моменты жизни компонента либо в ответ на какие-нибудь изменения.

Давайте рассмотрим каждый жизненный этап, включая методы, с ними связанные.

Этап № 1: монтирование

Как известно, компоненты, созданные на основе классов, тоже являются классами. Именно поэтому первый запускаемый метод — constructor(). Как правило, именно в constructor() мы выполняем инициализацию состояния компонента.

Далее компонент запускает getDerivedStateFromProps(), потом запускается render(), возвращающий JSX. React «монтируется» в DOM. Следующий этап — запуск метода componentDidMount(). Тут происходит выполнение всех асинхронных вызовов к базам данных. Итак, компонент «рожден».

Этап № 2: обновление

Данный этап запускается во время каждого изменения состояния либо свойств. Как и в случае с монтированием, происходит вызов метода getDerivedStateFromProps(), однако в этот раз уже без constructor().

Потом происходит запуск shouldComponentUpdate(). Тут можно выполнять сравнение старых свойств с новым перечнем свойств либо сравнивать состояния. При этом мы можем указать, надо ли отображать компонент заново, возвращая true либо false — это даст возможность сделать приложение более эффективным благодаря уменьшению числа лишних отображений. Если же shouldComponentUpdate() возвращает false, этап обновлений завершается.

В обратном случае React отобразится заново, а потом запустится getSnapshotBeforeUpdate(). Потом React запустит componentDidUpdate(). Как и в случае с componentDidMount(), его можно применять для асинхронных вызовов либо управления DOM.

Этап № 3: размонтирование

Все хорошее имеет тенденцию заканчиваться. Когда компонент прожил свою жизнь, наступает размонтирование — последний жизненный этап. Во время удаления компонента из DOM React выполняет запуск componentWillUnmount() непосредственно перед удалением. Данный метод применяется при закрытии всех открытых соединений типа web-сокетов либо тайм-аутов.

Прочие методы жизненного цикла

Также можно упомянуть такие методы, как forceUpdate() и getDerivedStateFromError(). Первый метод напрямую вызывает повторное отображение. У него существует несколько применений, но его желательно избегать.

Что касается getDerivedStateFromError(), то это метод, который не совсем является частью жизненного цикла. Когда в компоненте появляется ошибка, происходит запуск getDerivedStateFromError(), в результате появляется возможность обновить состояние, дабы показать, что ошибка имела место быть. Вот этот метод следует использовать чаще.

Последующий фрагмент программного кода с CodePen покажет основные этапы стадии монтирования:

1-1801-d4b532.png

Вывод будет следующим:

2-1801-091302.png

По материалам: https://www.freecodecamp.org/news/these-are-the-concepts-you-should-know-in-react-js-after-you-learn-the-basics-ee1d2f4b8030/.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто