2015-12-21 4 views
1

Мне нужно выполнить вычисления по размеру, когда компонент полностью отображается. Метод componentDidMount, однако, срабатывает, как только компонент отображается, но это не дети. Этот код, например:Реагировать на жизненный цикл, когда компонент полностью визуализирован

componentDidMount(){ 
    console.log(findDOMNode(this).childNodes.length); 
} 

выходы 0

Что такое правильный способ вызвать некоторый код, как только компонент был полностью вынесенным вместе с любыми компонентами потомков.

Редактировать: Я не хочу использовать componentDidUpdate, так как этот метод запускается при любом обновлении. Мне просто нужно, чтобы это запускалось один раз.

Edit2: Как @NaisheelVerdhan указывает, документы говорят, что componentDidMount модули вызываются на детей первого, но в данном случае я запутался, почему мой выше пример возвращает 0

+0

[Из документов] (https://facebook.github.io/react/docs/component-specs.html#mounting-componentdidmount): перед дочерними компонентами вызывается метод дочерних компонентов componentDidMount(). –

+0

Ручка, но, может быть, setTimeout? –

+0

Попробуйте использовать this.getDOMNode(). ChildNodes.length, но помните, что этот метод устарел и findDOMNode был перемещен в ReactDOM. И, как сказано выше, компонент componentDidUpdate будет вызываться первым в компонентах chlild. –

ответ

0

Обычно требуется выполнить расчеты метод рендеринга. Есть ли причина, по которой вы не можете этого сделать?

+0

Метод визуализации выполняется до того, как компонент помещается в DOM, поэтому я не могу измерить что-либо, пока оно не будет выложено браузером. – disc0dancer

0

Извините, но все. Компонент I был рендерингом, первоначально установленным пустым и заполненным позже. @NaisheelVerdhan был совершенно прав.

Смежные вопросы