开发者问题收集

为什么 response.data 未定义?

2017-12-27
7150

我正在使用 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个回答

Response 对象 没有 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 }));
T.J. Crowder
2017-12-27