React Native错误:undefined不是对象(评估' Object.keys(dataBlob [sectionID])')

时间:2016-05-31 13:43:43

标签: javascript ios facebook react-native

我试图在ListView中使用facebook API在React Native应用程序中显示Facebook页面状态。 This tutorial给了我很多帮助,我设法在我的应用程序中显示最后一个状态。

但是当我尝试将所有状态放在ListView中时,我收到以下错误消息:" undefined不是对象(评估' Object.keys(dataBlob [sectionID])') "

我在另一篇stackoverflow帖子中读到这是因为我试过 在对象而不是Array上运行cloneWithRows()函数。但我仍然无法克服这个错误。

所以,如果有人可以帮助我那会很棒。以下是facebook API

生成的JSON示例
{"data":[{"message":"Test","created_time":"2016-05-31T13:36:56+0000","id":"1602039116775292_1605827029729834"},

{"message":"Hello","created_time":"2016-05-31T13:36:50+0000","id":"1602039116775292_1605827006396503"},

这是我的一些index.ios.js文件:

    constructor(props){
    super(props);
    this.state = {
      dataSource: new ListView.DataSource({
        rowHasChanged: (row1, row2) => row1 !== row2,
      }),
      loaded: false,
    };
  }

  componentDidMount(){
    this.fetchData();
  }

  fetchData(){
    fetch(REQUEST_URL)
      .then((response) => response.json())
      .then((responseData) => {
        this.setState({
          dataSource: this.state.dataSource.cloneWithRows(responseData.timeline), //The problem is here
          loaded: true,
        });
      })
      .done();
  }

  render(){
    if (!this.state.timelines) {
      return this.renderLoadingView();
    }

    return(
      <ListView
        dataSource={this.state.dataSource}
        renderRow={this.renderStatus}
        style={styles.listView}
      />
    );

在这一行:

dataSource: this.state.dataSource.cloneWithRows(responseData.timeline),

我试图替换&#39;时间线&#39;使用&#39;数据&#39;但是,不加载数据并继续使用LoadingView。

如果您需要更多代码或信息,请与我们联系。

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

我终于发现我的代码出了什么问题。 当我检查是否设置了this.stat.timelines时,错误来自渲染功能。但在这种情况下,“时间轴”并不存在。

if (!this.state.loaded) {
  return this.renderLoadingView();
}

这就是我修复它的方法。