2017-02-01 2 views
0

Ich versuche, eine JSON (Array von Filmobjekten) Einblick ListView-Komponente, aber erhalten Sie den Fehler: kann nicht lesen Eigenschaft KlonWithRows von undefined. Was genau mache ich falsch? Ich habe eine Menge Tutorials gefunden und alle verwenden hart codierte Daten und können nicht sehen, wie es verwendet wird, wenn die Daten aus einer Anfrage stammen. Hier ist mein Code:Anzeigen von JSON in einer ListView

constructor() { 
    super(); 
    const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 }); 
    this.state = { dataSource: ds.cloneWithRows([]) }; 
} 


componentWillMount() { 
    axios.get('https://www.omdbapi.com/?s=Batman&page=2') 
     .then(response => response.data) 
     .then(this.onAfterLoad) 
     .catch(this.manageError); 
} 

// We will update the state of the application so that images can render 
onAfterLoad = (data) => { 
    this.setState({ dataSource: this.ds.cloneWithRows(data.Search) }); 
}; 

// If there is an error show error  
manageError = (error) => { 
    Alert.alert('Failure fetching data'); 
    console.error(error); 
}; 

// Description: Render all the titles 
// ------------------------------------------------------------------------------------ 

renderRow(rowData) { 
    console.log(rowData); 
    return <Movie key={rowData.imdbID} data={rowData} />; 
} 

// Description: Render everything to the screen 
// ------------------------------------------------------------------------------------ 

render() { 
    return (
     <ListView 
      dataSource={this.state.dataSource} 
      renderRow={this.renderRow} 
     /> 
    ); 
} 

Antwort

0

Das Problem war, dass

dataSource: this.ds.cloneWithRows(data.Search) 

dataSource: this.state.dataSource.cloneWithRows(tutorials) 

innerhalb onAfterLoad() Methode sein sollte.

Verwandte Themen