Управление обновлениями с помощью методов жизненного цикла
Другим методом жизненного цикла является componentWillReceiveProps()
который вызывается всякий раз, когда компонент получает новые свойства. Этот метод получает новые свойства в качестве аргумента, который обычно записывается как nextProps
. Вы можете использовать этот аргумент и сравнить с текущим this.props
и выполнить действия перед обновлением компонента. Например, вы можете вызвать setState()
локально до обработки обновления.
Другим методом является componentDidUpdate()
и вызывается сразу после повторного рендеринга компонента. Обратите внимание, что рендеринг и установка в жизненном цикле компонентов считаются разными. Когда страница сначала загружается, все компоненты монтируются, и здесь вызывается такие методы, как componentWillMount()
и componentDidMount()
. После этого, по мере изменения состояния, компоненты перерендеривают себя. Следующая задача охватывает это более подробно.
Внимание: Данный метод устарел и больше не поддерживается Реактом.
Дочерний компонент Dialog
получает свойство message
от своего родителя - компонента Controller
. Напишите componentWillReceiveProps()
в компоненте Dialog
и выведите в консоли аргумент nextProps
и объект this.props
. Вам нужно будет передать nextProps
в качестве аргумента для этого метода, и хотя можно назвать его чем угодно, назовите его nextProps
. Затем добавьте componentDidUpdate()
в компонент Dialog
и запишите условие, в котором говорится, что компонент обновлен. Этот метод работает аналогично componentWillUpdate()
, который предоставляется вам. Теперь нажмите кнопку, чтобы изменить сообщение и посмотреть консоль браузера. Порядок консольных операторов показывает порядок вызова методов.
Примечание. Вам необходимо будет написать методы жизненного цикла в качестве обычных функций, а не стрелочных функций для прохождения тестов (также нет преимуществ при написании методов жизненного цикла в виде стрелочных функций).