Порядок componentDidMount в иерархии компонентов React

У меня есть приложение React, которое имеет следующую структуру:

компонент А состоит из В и С

Когда компонент B вызывает это componentDidMount метод, это правда, что все компоненты закончили монтаж?

Или, другими словами , реагирует на огонь componentDidMount после того как все компоненты в дереве были смонтированы?

или, например, компоненты B componentDidMount вызывается, когда компонент A смонтирован?

2 ответа

Согласно документации, порядок методов жизненного цикла при первом монтировании выглядит следующим образом:

  1. конструктор()
  2. componentWillMount ()
  3. рендеринга ()
  4. 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. А будет свое, потом Б, потом С.

Поэтому я думаю, что ответ на ваш вопрос: нет, не все компоненты закончили бы монтаж, поскольку они запускают метод жизненного цикла "непосредственно перед монтажом".

Другие вопросы по тегам