【发布时间】:2019-08-04 15:03:04
【问题描述】:
我还是 ReactJS 的新手,我目前正在摆弄 Spotify API,它工作得很好,但是我在尝试渲染通过 API 检索到的图像数组时偶然发现了一个问题。
起初,我尝试在 render() 组件中调用它,但它只生成一个空的“未定义”图像列表,只显示 alt 属性。其次,我在return()里面试了一下,症状和前者一样,这次完全没有任何图像。
这个问题只发生在我尝试使用.map() 方法时;当我单独渲染图像时,它工作得很好。
import React, { Component } from "react";
let someData = "hello";
export default class App extends Component {
constructor(props) {
super(props);
this.state = {
playlists: { name: [], plist_id: [], albumArt: [] }
};
}
getPlaylists(someData) {
let plistNames = [];
let plistContents = [];
let plistArts = [];
someApi
.searchPlaylists(someData)
.then(data => {
if (data.playlists.items) {
if (data.playlists.items.length > 0) {
console.log(data);
data.playlists.items.forEach(plist => {
plistNames.push(plist.name);
plistContents.push(plist.id);
plistArts.push(plist.images[0].url);
this.setState({
playlists: {
name: plistNames,
plist_id: plistContents,
albumArt: plistArts
}
});
});
}
}
})
.catch(err => {
console.error(err);
});
}
render() {
//Produces a list of empty images with only the alt attribute showing up
let _playlists = this.state.playlists.albumArt.map((plist, index) => {
return <img key={index} src={plist.albumArt} alt="Album Art"/>
})
return (
<div className="App">
<button onClick={() => this.getPlaylists(someData)}>
Get Playlist
</button>
{_playlists}
{/* THIS PRODUCES a similar sympton as the former
{playlists.albumArt.map((plist, index) => {
<img key={index} src={plist.albumArt} alt="Album Art"/>
})
} */}
{/* THIS IMAGE RENDERS THE FIRST ELEMENT FROM THE ARRAY AND WORKS FINE
<img src={playlists.albumArt[0]}/> */}
</div>
);
}
}
如何解决这样的问题?感谢您的时间和帮助。
【问题讨论】:
-
为自己的幼稚道歉,但
<img key={index} src={plist.albumArt} alt="Album Art"/>已经在图像标签中还不够吗?
标签: javascript reactjs image render