我有一个React组件,里面有很多子组件.我希望不是立即渲染子组件,而是在经过一些延迟后渲染(每个子组件是一致的或不同的).
我在想——有没有办法做到这一点?
我有一个React组件,里面有很多子组件.我希望不是立即渲染子组件,而是在经过一些延迟后渲染(每个子组件是一致的或不同的).
我在想——有没有办法做到这一点?
我认为最直观的方法是给子元素们一个"wait"prop
,它会在从父母那里传下来的持续时间内隐藏组件.通过将默认状态设置为"隐藏",React仍将立即渲染组件,但在状态更改之前,组件将不可见.然后,您可以设置componentWillMount
来调用函数,在通过props 传递的持续时间之后显示它.
var Child = React.createClass({
getInitialState : function () {
return({hidden : "hidden"});
},
componentWillMount : function () {
var that = this;
setTimeout(function() {
that.show();
}, that.props.wait);
},
show : function () {
this.setState({hidden : ""});
},
render : function () {
return (
<div className={this.state.hidden}>
<p>Child</p>
</div>
)
}
});
然后,在父组件中,只需传递希望子组件在显示之前等待的持续时间.
var Parent = React.createClass({
render : function () {
return (
<div className="parent">
<p>Parent</p>
<div className="child-list">
<Child wait={1000} />
<Child wait={3000} />
<Child wait={5000} />
</div>
</div>
)
}
});