Я хочу восстановить DOM.offsetWidth всех детей. Все они имеют разные размеры и зависят от стиля темы на основе CSS.
Все отлично работает с методом ComponentDidUpdate (), но это не срабатывает в первый раз.
Не могу поставить весь код, но ниже кода примера, так:
- Как ждать всех детей? или
- Как сказать родителю: все DOM готовы, теперь проверьте размер
Пример Parent
class Parent extends Component {
this.childDOMRef = null;
setChildDom(element) {
this.childDOMRef = element;
}
componentDidMount(){
const childrenWidth = [...this.childDOMRef.children]
.reduce((prev, current) => prev + current.offsetWidth, 0);
console.log(childrenWidth); // :( it is 0 on DidMount
}
render(){
return <ChildStateLess
items={this.props.items} // I receive from redux
setInnerRef={this.setChildDom}
>
}
}
Пример Child (без гражданства)
const ChildStateLess = ({setInnerRef, items}) => {
<div ref={setInnerRef}>
{ items.map(item) => (<div>{item}</div>)}
</div>
};
/// ОБНОВЛЕНИЕ
OnDidMount очевидно, что дочерние элементы не существуют.
OnDidUpdate все существует, но этот метод не срабатывает при входе в сеть.
![enter image description here](https://i.stack.imgur.com/Tt5W8.png)
/// ОБНОВЛЕНИЕ 2
Сохранение ссылки на номер, для последнего отображения, не работает, как ожидалось, не может получить свойство DOM
![enter image description here](https://i.stack.imgur.com/ebLqY.png)