我不能肯定地说,因为我需要看到返回数据的结构,但我对你很有信心 的 不要 强> 想要在中设置状态 forEach() 循环了很多次。
forEach()
相反,您可能希望映射数据的结果并将其转换为一些有用的对象数组,然后再将其添加到状态,以便您可以将其映射到 render (看起来很好)并可预测地访问内容。
render
话虽如此,我希望你的 .then() 阻止之后 searchPlaylists 打电话看起来更像:
.then()
searchPlaylists
const playlistsWrangled = data.playlists.items.map(plist => ({ name: plist.name, plist_id: plist.id, albumArt: plist.images[0].url })); this.setState({ playlists: wrangledPlaylists });
我相信你的两个案例之间的区别在于,在“工作”案例中,你没有alt道具。
如果您希望图像在加载过程中干净地显示,则必须剪切一些角落。使用逐步处理图像加载的模块,或者,如果您不关心辅助功能,请将alt标记设置为空,并为图像指定默认背景颜色(如果您希望加载后可以设置alt标记)。
有条件的内联声明怎么样?这样它会在收到信息后呈现?
{this.state.playlist.name ? //have your code here to display : <LoadingSpinner /> }