检查是否已安装所有子组件

Phi*_*ani 9 reactjs react-jsx

有没有办法检测孩子是否已经安装?当我初始化同位素时,必须安装所有子组件以进行初始化.超时为5毫秒,它的工作方式与预期相符,但我确信有更好的方法.

componentDidMount: function() {
    var container = this.refs.vinesOverview.getDOMNode();

    setTimeout(function() {
      var isotope = new Isotope(container, {
        itemSelector: ".vine_item",
        layoutMode: "masonry",
        resizable: true,
        gutter: 0,
        isFitWidth: true
      });

      this.setState({ isotope: isotope });
    }.bind(this), 5);
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

我现在试过这个:

componentDidMount: function() {
    var container = this.refs.vinesOverview.getDOMNode();
    console.log(container.offsetHeight); // console output 0
    setTimeout(function() {
        console.log(container.offsetHeight); // console output 3150
    }, 5);
  },
Run Code Online (Sandbox Code Playgroud)

那么在5ms后它计算出了高度?这就是同位素不起作用的原因.这是一个Bug还是正常的?谢谢!

Sop*_*ert 32

在调用componentDidMount父级之前,React等待挂载所有子组件.如果你发现一个不存在的责任案例,请提交一个错误.

  • 也许在调用父级的`componentDidMount`方法时会挂载所有子组件,但是在子组件的"componentDidMount"之前反应调用父组件的`componentDidMount`.我应该提交错误吗? (5认同)