如何在React组件中生成重复的标记元素,还需要对每个元素进行REST API查询?最初,我在componentDidMount函数中的for-each循环中完成了调用。但是这需要在循环内调用setState,以便触发重新渲染。行为不稳定,and apparently that technique is not a good idea.
所以,现在我正在尝试让查询在我的渲染的.map函数内运行(见下文)。但那产生了this error。
有没有办法返回元素值而不是promise? (可能更多的是JS问题而不是React ...) 或者我完全以错误的方式解决这个问题?
return (<div>
{this.props.currentProject.Tasks.map((task => {
return ProjectsService.getTaskBaselines(this.props.currentProject.PWAGuid, task.TaskId, this.props.context).then((baseline: any): any => {
return (<div>{task.TaskName}</div>);
})
}))}
</div>);
答案 0 :(得分:2)
似乎您想要查询所有API,然后在完成所有API后处理响应。
试试这个:
const promises = this.props.currentProject.Tasks.map((task => {
return new Promise(function(resolve, reject) {
resolve(task);
});
Promise.all(promises).then((data) => {
this.setState({
// act on all of your data
});
});
然后在this.state
函数中渲染render()
。