Последовательность вызовов componentWillMount в React.Яш
согласно этой странице http://busypeoples.github.io/post/react-component-lifecycle/ метод render для компонента вызывается прямо между componentWillMount
и componentDidMount
методы среди других мест.
но реагируют.документация js для жизненных циклов компонентов здесь https://facebook.github.io/react/docs/component-specs.html говорит, что componentDidMount
методы всех дочерних действий вызываются перед родителем. Я могу это понять. componentDidMount
можно вызывать после отображения любых дочерних компонентов, но как среда выполнения знает, какие дочерние компоненты вызывать componentWillMount
функция включена, прежде чем они будут отображаться? Или я прав, предполагая, что componentWillMount
вызывается для родительского действия сначала, а затем для детей (в отличие от componentDidMount
)?
спасибо!
2 ответов
OK. вот так. Если у вас есть простая структура с родителем и 2 детьми, как это:
<Parent>
<Child/>
<Child/>
</Parent>
тогда последовательность событий стрельбы будет:
<Parent> componentWillMount()
-
<Parent> render()
, который начинает отображать детей -
<Child> componentWillMount()
первого ребенка -
<Child> render()
первого ребенка -
<Child> componentWillMount()
второго ребенка -
<Child> render()
второго ребенка -
<Child> componentDidMount()
из первый ребенок (они будут запускаться только после запуска последнего рендеринга в дереве) -
<Child> componentDidMount()
второго ребенка -
<Parent> componentDidMount()
(этот будет работать только после того, как его последний ребенок побежалcomponentDidMount
)
вы можете найти пример codepen здесь.
вы могли бы поставить консоль.log() в каждом из методов, чтобы увидеть их порядок, напечатанный в консоли.