我在反应原生中使用API获取数据。在控制台中获取数据时,它成功获取数据。但是在使用下面的代码时,相册数组显示未定义。
state = { albums: [] };
componentWillMount() {
//fetch('https://ws.audioscrobbler.com/2.0/?method=chart.gettoptracks&api_key=881262b246e1d3f2abda8771b1a25fe3&format=json')
fetch('https://rallycoding.herokuapp.com/api/music_albums')
.then(response => this.setState({ albums: response.data }));
}
我正在获得像这样的控制台日志
{albums:Array(0)}
{albums:undefined}
为什么这是未定义的?
答案 0 :(得分:5)
Response
object没有data
属性。您可以通过调用text
,json
,blob
或arrayBuffer
方法并使用他们返回的承诺来访问回复正文。
例如,如果您正在接收JSON:
fetch('https://rallycoding.herokuapp.com/api/music_albums')
.then(response => response.json())
.then(data => this.setState({ albums: data }));
直播示例:
fetch('https://rallycoding.herokuapp.com/api/music_albums')
.then(response => response.json())
.then(data => {
console.log(data);
});

或者我们可以调用参数albums
并使用简写属性表示法:
fetch('https://rallycoding.herokuapp.com/api/music_albums')
.then(response => response.json())
.then(albums => this.setState({ albums }));