最佳答案
我有一个组件,它获取一个项目集合作为道具,并且 map
将它们作为父组件的子组件呈现到一个组件集合中。我们使用存储在 WebSQL
中的图像作为字节数组。在 map
函数中,我从项目中获得一个图像 ID,然后异步调用 DAL
,以获得图像的字节数组。我的问题是我不能在 React 中传播承诺,因为它不是设计来处理呈现中的承诺的(至少在我看来是这样)。我来自一个 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;
});
}
这个不能用,但我不知道要修改什么才能用。我尝试向这个链中添加另一个承诺,但是我得到了一个错误,因为呈现函数返回的是一个承诺,而不是合法的 JSX。我在想,也许我需要利用一个 React
生命周期方法来获取数据,但是因为我需要 props
已经在那里了,所以我不知道在哪里可以做到这一点。