2016-05-31 4 views
2

FacebookのReactネイティブアプリケーションでListBoxのページステータスを表示しようとしています。 This tutorial私は多くの助けを借りて、私は自分のアプリケーションで最後のステータスを表示することができました。Reactネイティブエラー:未定義はオブジェクトではありません(Object.keys(dataBlob [sectionID])を評価しています)

しかし、私はこのエラーメッセージを取得するリストビュー内のすべてのステータスを置くしようとしたとき:

は私が読んで「未定義のは( 『Object.keys(dataBlob [セクションID])』を評価)オブジェクトではありません」私は しようとしたため、別のstackoverflowの投稿は、配列の代わりにオブジェクトの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ファイルの一部です:

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

I:この行で

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} 
     /> 
    ); 

を'timeline'を 'data'に置き換えようとしましたが、データをロードせずにLoadingViewを続けます。

もっとコードや情報が必要な場合は教えてください。

ありがとうございました。

+0

正確には 'responseData.timeline'とは何ですか?それとも 'responseData'そのものですか? –

+0

@TomWalters私は以前私がメンタリングしたチュートリアルに従っていたので、私はresponseData.timelineを使用しましたが、通常はデータがフェイスブックAPIへのフェッチ呼び出しで取得されます。 –

答えて

2

私は最終的に私のコードに何が間違っているかを知りました。 this.stat.timelinesが設定されているかどうかをチェックすると、レンダリング機能からエラーが発生しました。しかし、この場合、「タイムライン」は存在しません。

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

これは私がそれを修正した方法です。

関連する問題