为什么response.data未定义?

时间:2017-12-27 12:16:28

标签: javascript react-native

我在反应原生中使用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}

为什么这是未定义的?

1 个答案:

答案 0 :(得分:5)

Response object没有data属性。您可以通过调用textjsonblobarrayBuffer方法并使用他们返回的承诺来访问回复正文。

例如,如果您正在接收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 }));