【发布时间】:2019-03-29 08:54:23
【问题描述】:
只有当后端没有任何内容时,我才尝试获取 No list items。现在,onload,我在获取数据之前获得了加载微调器和 No List items。
所以,我想我会添加一个超时来处理这个问题,这样它只会在提取完成后显示,并且没有项目
getList() {
if(this.state.list.length != 0){
return (this.state.list.map(data => {
return <div data={data} key={data.id}/>
}))
}else{
return <div>No List items</div>
}
}
render() {
return (
<div>
<Spinner active={this.state.active} />
<div>{setTimeout(this.getList, 1000)}</div>
</div>
);
}
}
当我使用它时,我会在浏览器上获取数字。在 componentDidMount 上微调器的活动状态更改为 false
【问题讨论】:
-
setTimeout返回一个可以传递给clearTimeout的 ID。setTimeout不会也不能返回回调的返回值,因为setTimeout在调用它的那一刻实际上并没有执行该函数。在您的情况下使用setTimeout没有意义。 -
@FelixKling 那么你有什么建议,我应该在获取完成之前延迟“无列表项”标签。我无法返回值
-
您最初可以将
this.state.list设为null,这意味着尚未从服务器获取数据。或者,假设在获取数据时this.state.active为true,一旦获取数据,则为false,您只需执行{this.state.active ? null : this.getList()}。 -
查看我的更新评论。如果
this.state.list是null,你当然不会打电话给getList。我们不知道您的其余代码以及您如何处理this.state.list,因此我们必须相信您知道如何将建议应用于您的情况。
标签: javascript reactjs