问题可能很常见,但我问,因为我无法修复它。我得到“ null不是一个对象(在第22行评估'this.state.albums')”
而且我对调用后返回的数据类型以及如何处理它有点不清楚。拜托,有人可以帮我解释一下吗?我正处于学习阶段。当我直接提醒response.data我得到[对象] [对象]我必须做JSON stringify来查看数据。我们为什么要这样做?
import React, { Component } from 'react';
import {Text} from 'react-native';
import axios from 'axios';
export default class AlbumList extends Component{
constructor(props) {
super(props);
state = { albums : []};
}
componentWillMount(){
console.log('in componentWillMount');
//debugger;
//alert("first"+this.state);
axios.get('https://rallycoding.herokuapp.com/api/music_albums')
.then((response) => {
//console.log(response);
//alert(JSON.stringify(response));
this.setState({albums : response.data});
//alert(JSON.stringify(this.state.albums));
})
.catch((error) => {
alert(error);
});
}
renderAlbums(){
return this.state.albums.map( album => <Text>{album.title}</Text>); //line 22
}
componentDidMount() {
console.log('I was triggered during componentDidMount')
}
render(){
return(
<Text>{this.renderAlbums()}</Text>
//<Text>Hiii</Text>
);
}
}
答案 0 :(得分:1)
您的构造函数中缺少g = df.groupby('country')
fig, axes = plt.subplots(g.ngroups, sharex=True, figsize=(8, 6))
for i, (country, d) in enumerate(g):
ax = d.plot.bar(x='resource', y='average', ax=axes[i], title=country)
ax.legend().remove()
fig.tight_layout()
。
this
对于警报,您无法警告对象必须是字符串。因此警告constructor(props) {
super(props);
this.state = { albums : []};
}
对象只是JSON
。如果使用[object object]
,它会将对象转换为可用于警报的字符串。在JSON.stringify
中,您可以很好地记录对象,并且它们的结构更具可读性。我会坚持console
进行调试。