10

有什么方法可以检测孩子是否已安装?当我初始化同位素时,必须安装所有子组件以进行初始化。超时时间为 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);
  },

那么在 5 毫秒后它计算了高度吗?这就是同位素不起作用的原因。这是bug还是正常?谢谢!

4

1 回答 1

36

componentDidMountReact 在调用父组件之前等待挂载所有子组件。如果您发现不正确的重现案例,请提交错误。

于 2014-05-19T18:00:03.890 回答