反应等待无状态儿童的渲染?

时间:2018-09-05 16:18:54

标签: reactjs dom lifecycle stateless

我想恢复所有子级的DOM.offsetWidth。它们都具有不同的大小,并且取决于基于CSS的样式主题。

在ComponentDidUpdate()方法上一切正常,但这不是第一次触发。

我不能将所有代码都放在示例代码的下面,所以:

  • 如何等待所有孩子?或
  • 如何告诉父母:所有DOM准备就绪,现在检查大小

父示例

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}
    >
  }
}

子示例(无状态)

const ChildStateLess = ({setInnerRef, items}) => { 
    <div ref={setInnerRef}>
      { items.map(item) => (<div>{item}</div>)}
    </div>
};

///更新

OnDidMount 显然不存在子项。

OnDidUpdate 全部存在,但是在进入Web时不会触发此方法。

enter image description here

/// UPDATE 2

保留数字引用(对于最后呈现的内容)无法正常工作,无法获得DOM属性

enter image description here

0 个答案:

没有答案