有没有办法检测孩子是否已经安装?当我初始化同位素时,必须安装所有子组件以进行初始化。超时为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还是正常的?谢谢!
答案 0 :(得分:29)
在父级调用componentDidMount
之前,React等待挂载所有子组件。如果您发现不适用的情况,请提交错误。