Реактивно ждать рендера детей без гражданства? - PullRequest
0 голосов
/ 05 сентября 2018

Я хочу восстановить 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

/// ОБНОВЛЕНИЕ 2

Сохранение ссылки на номер, для последнего отображения, не работает, как ожидалось, не может получить свойство DOM

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...