如何显示从 axios 请求(React)返回的图像?

IT技术 reactjs google-maps axios
2021-05-11 16:22:56

我正在使用 React 开发一个谷歌地图项目。我为 onClick 处理程序分配了以下方法:

  getStreetView(lat,lng){
    let url = `https://maps.googleapis.com/maps/api/streetview?size=600x300&location=${lat},${lng}&heading=151.78&pitch=-0.76&key=MYAPIKEY`
    axios.get(url).then(response=>this.setState({image:response.config.url}));
  }

state = { image: null }随后beeing分配我以后传递给图像标记的子组件,例如网址<img src={props.image} alt='street view'/>一切都像魅力一样,但是我遇到了各种其他解决方案,例如:

function getBase64(url) {
  return axios
    .get(url, {
      responseType: 'arraybuffer'
    })
    .then(response => Buffer.from(response.data, 'binary').toString('base64'))
}

来自b4dnewzaxios 文档。但是,我找不到如何在具有该响应类型的子组件中显示图像的合理方法。我的问题是,我的方法有效吗?有什么理由让我不应该那样使用它吗?

1个回答

如果您是从 api 获取图像 url,那么您的第一种方法是正确的方法,但是

Buffer.from(response.data, 'binary').toString('base64'))

当图像本身作为二进制文件从服务器接收时使用该方法,该二进制文件被转换为 base 64 并提供给 <img>