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

时间:2014-05-19 10:01:06

标签: 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);
}

更新

我现在尝试过这个:

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);
  },

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

1 个答案:

答案 0 :(得分:29)

在父级调用componentDidMount之前,React等待挂载所有子组件。如果您发现不适用的情况,请提交错误。