相关疑难解决方法(0)

使用render方法内的promises渲染React组件

我有一个组件,它将一个项目集合作为道具,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} />
       );
    });
Run Code Online (Sandbox Code Playgroud)

这个getImageUrlById方法看起来像这样:

getImageUrlById(imageId) {
    return ImageStore.getImageById(imageId).then(function (imageObject) { //<-- getImageById returns a promise
       var completeUrl = getLocalImageUrl(imageObject.StandardConImage);
       return completeUrl;
    });
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,但我不知道我需要修改什么来使这项工作.我尝试向链添加另一个promise,但后来我得到一个错误,因为我的render函数返回一个promise而不是合法的JSX.我在想,也许我需要利用其中一种React生命周期方法来获取数据,但由于我需要props已经存在,我无法弄清楚我能在哪里做到这一点.

javascript q reactjs

63
推荐指数
2
解决办法
7万
查看次数

标签 统计

javascript ×1

q ×1

reactjs ×1