我有一个组件,它获取一组项目作为props,map
并将它们放入一组组件中,这些组件被呈现为父组件的子组件。我们使用存储在WebSQL
字节数组中的图像。在该map
函数中,我从项目中获取图像 ID,并对 进行异步调用DAL
以获取图像的字节数组。我的问题是我无法将Promise传播到 React,因为它不是为了处理渲染中的Promise而设计的(无论如何我都不能说)。我来自一个C#
背景,所以我想我正在寻找类似await
用于重新同步分支代码的关键字的东西。
该map
函数看起来像这样(简化):
var items = this.props.items.map(function (item) {
var imageSrc = Utils.getImageUrlById(item.get('ImageId')); // <-- this contains an async call
return (
<MenuItem text={item.get('ItemTitle')}
imageUrl={imageSrc} />
);
});
该getImageUrlById
方法如下所示:
getImageUrlById(imageId) {
return ImageStore.getImageById(imageId).then(function (imageObject) { //<-- getImageById returns a promise
var completeUrl = getLocalImageUrl(imageObject.StandardConImage);
return completeUrl;
});
}
这不起作用,但我不知道我需要修改什么才能使它起作用。我尝试向链中添加另一个Promise,但随后出现错误,因为我的渲染函数返回了一个Promise而不是合法的 JSX。我在想,也许我需要利用React
生命周期方法之一来获取数据,但由于我需要props
已经在那里,我不知道在哪里可以做到这一点。