我试图在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。
如果您需要更多代码或信息,请与我们联系。
感谢您的帮助。
答案 0 :(得分:4)
我终于发现我的代码出了什么问题。 当我检查是否设置了this.stat.timelines时,错误来自渲染功能。但在这种情况下,“时间轴”并不存在。
if (!this.state.loaded) {
return this.renderLoadingView();
}
这就是我修复它的方法。