Я все еще новичок в 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>
);
}
}
Как можно решить такую проблему? Большое спасибо за ваше время и помощь.