null不是评估this.state。<name>的对象

时间:2018-03-15 17:58:54

标签: json react-native axios

问题可能很常见,但我问,因为我无法修复它。我得到“ 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>
    );
}
}

1 个答案:

答案 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进行调试。