reactjs - 如何将存储在 AWS S3 中的图像中的公共 URL 插入 JSX 组件?
问题描述
我正在尝试接收图像的公共 URL,这些图像存储在 AWS S3 存储中,如下所示:Storage.get(imageKey)
=> Promise
但是我在存储该承诺的返回值时遇到了问题。
这是我的代码
import { Storage } from 'aws-amplify'
class Images extends Component {
getImgUrl = async key => {
return Storage.get(key)
.then(res => (res))
.catch(err => console.log(err))
}
render() {
return(
<div>
{arrayWithObjects.map(({img}) => (
<img src={this.getImgUrl(img)} />
)}
</div>
)
}
}
使用此代码,我在 src 中收到“[object Promise]”。这是有道理的,但我不知道如何获取在解析器中返回的实际 URLStorage.get()
解决方案
尝试这个
import { Storage } from 'aws-amplify'
const getImgUrl = key => {
return Storage.get(key)
.then(res => (res))
.catch(err => console.log(err))
}
class Image extends Component {
this.state = {
imgSrc: null
}
componentDidMount(){
getImgUrl(this.props.img).then(src => {
this.setState({imgSrc: src});
});
}
render() {
if(!this.state.imgSrc) {
return null;
}
return <img src={this.state.imgSrc} />;
}
}
class Images extends Component {
render() {
return(
<div>
{arrayWithObjects.map(({img}) => (
<Image img={img} />
)}
</div>
)
}
}
推荐阅读
- c++ - C++:使用索引访问类成员的最佳方式
- oracle - 我的 Oracle 云实例上的 SSH 权限被拒绝(公钥)
- linux - ausyscall 无法提取新的系统调用
- javascript - 如何在 JS 中直接调用控制器内部的路由配置,而不是从 html a href on-click
- dax - 在 DAX 中使用 selectedMeasure() 和过滤器的语法错误
- oauth-2.0 - Google OAuth 客户端库如何使用刷新令牌刷新访问令牌?
- python - 如何找到最经常出现的单词并将其打印到python中的不同文本文件中?
- azure - 导航 Azure Python SDK
- javascript - 如何在游戏循环中使用 addEventListener
- deep-learning - 在训练深度学习模型时,在每个数据批次之后增加 RAM 需求的结果是什么?