Порядок componentDidMount в иерархии компонентов React
У меня есть приложение React, которое имеет следующую структуру:
компонент А состоит из В и С
Когда компонент B вызывает это componentDidMount
метод, это правда, что все компоненты закончили монтаж?
Или, другими словами , реагирует на огонь componentDidMount
после того как все компоненты в дереве были смонтированы?
или, например, компоненты B componentDidMount
вызывается, когда компонент A смонтирован?
2 ответа
Согласно документации, порядок методов жизненного цикла при первом монтировании выглядит следующим образом:
- конструктор()
- componentWillMount ()
- рендеринга ()
- componentDidMount ()
Допустим, у вас есть этот компонент:
class A extends Component {
render() {
return (
<div>
<B />
<C />
</div>
)
}
}
Когда А установлен, он будет стрелять componentDidMount()
, Это произойдет после рендера. Поскольку B и C не существуют до A render()
называется, завершение монтажа A требует, чтобы B и C закончили свои соответствующие жизненные циклы. Как componentDidMount()
будет стрелять после того, как B и C установлены. Как componentWillMount()
стреляет перед render()
и, следовательно, он также срабатывает до установки B или C
ОБНОВИТЬ
По Реакту 16.3, componentWillMount
запускает процесс амортизации вместе с componentWillUpdate
а также componentWillReceiveProps
, Приведенный выше пример будет хорошо работать в любом выпуске реагирования 16.x, но он получит предупреждения об устаревании. Есть новые методы, которые имеют место из устаревших, с их собственным жизненным циклом. Подробнее о них в документации по компонентам API. Вот схема на сайте для новых жизненных циклов
Родители componentDidMount
пожары после детских.
Похожая проблема: в каком порядке отображаются родительско-дочерние компоненты?
React Docs заявляют:
componentWillMount () вызывается непосредственно перед монтированием. Вызывается перед render()...
Каждый компонент будет запускать свой собственный componentDidMount. А будет свое, потом Б, потом С.
Поэтому я думаю, что ответ на ваш вопрос: нет, не все компоненты закончили бы монтаж, поскольку они запускают метод жизненного цикла "непосредственно перед монтажом".