- Жизненный цикл
- Создание и иницилизация компонента
- Обновление компонента
- componentWillUnmount
- deprecated
- componentDidCatch
- Полезные ссылки
- constructor
- getDerivedStateFromProps
- componentDidMount
Можно
- Установите изначальное состояние компонента
- Задайте значение state
- “Привяжите”
thisк вашим функциям, если не используете стрелочные функции для методов - Создайте "связи" для взаимодействия с
DOMузлами или элементами React, определяемыми в методеrender.
Нельзя
- Не выполняйте никаких сайд-эффектов
Избегайте
- Копирования свойств
propsвstate, они будут доступны и так. Исключением можно считать случай, когда мы хотим игнорировать обновленияprops
Статическая функция (нет доступа к this), возращает объект или null. Возвращаемый объект "вливается" в существующее состояние компонента.
Отрабатывает при инициализации компонента, изменении props, setState и this.forceUpdate (с 16.4.2).
Можно
- Синхронизируйте ваши
propsиstate(замена устаревшему componentWillReceiveProps(nextProps)).
Нужно
- Определить, каким будет
DOM
Нельзя
- Не выполняйте
this.setState- приведет к зацикливанию
Сигнализирует о том, что компонент и все его дочерние компоненты отрисовались без ошибок
Можно
- Установить счетчики/"листенеры"...
- Выполнить сайд-эффекты (Вызовы AJAX и т.д.)
Не рекомендуется
- Не стоит вызывать
this.setState, так как это приведет к перерисовке
- getDerivedStateFromProps
- shouldComponentUpdate
- getSnapshotBeforeUpdate
- componentDidUpdate
Возвращает true/false. При false процесс обновления останавливается.
При наследовании от PureComponent от метод уже реализован и использует swallowEqual
Можно
- Определить свои правила обновления компонента
Нельзя
- Не выполняйте
this.setState- приведет к зацикливанию
При сравнении объектов проверяется количество полей. Хорошее место для "нехорошего" хака
Можно
- Передать в componentDidUpdate третьим параметром дополниельные данные
Нельзя
- Не выполняйте
this.setState- приведет к зацикливанию
Можно
- Установить счетчики/"листенеры"...
- Выполнить сайд-эффекты (Вызовы AJAX и т.д.)
- Выполнить
this.setState, но вызов должен быть по условию, иначе приведет к зацикливанию
Нужно
- Удалить все назначенные счетчики/"листенеры"...
- Отменить AJAX запросы для этого компонента
Нельзя
- Не выполняйте
this.setState
- componentWillMount
- componentWillReceiveProps(nextProps)
- componentWillUpdate(nextProps, nextState)
Рекомендуется с версии 16.3 использовать эти методы жизненного цикла с префиксом UNSAFE
- UNSAFE_componentWillMount
- UNSAFE_componentWillUpdate
- UNSAFE_componentWillReceiveProps
В каком порядке вызываются методы
constructor()
static getDerivedStateFromProps()
UNSAFE_componentWillMount()
render()
componentDidMount()В каком порядке вызываются методы
UNSAFE_componentWillReceiveProps()
static getDerivedStateFromProps()
shouldComponentUpdate()
UNSAFE_componentWillUpdate()
render()
getSnapshotBeforeUpdate()
componentDidUpdate()- Сообщает о "небезопасных" методах lifecycle
- Предупреждает об использовании устаревшего
ref API - Сигнализирует о старом
context API - Отслеживание неожидаемых сайд-эффектов
Отлавливает ошибки javascript во всех дочерних компонентах
Принимает два параметра:
- error - текстовая ошибка, что мы видим в консоли
- info - объект с полем
componentStack, которое предоставляет "путь" до ошибки
Можно вызвать setState, чтобы обновить UI
Не отлавливает ошибки в:
- Обработчики событий (#
onClick) - Асинхронный код (# Timeout)
- SSR
- Компонент с таким методом не ищет проблемы в самом себе



