2017-07-29 57 views
0

我正確讀取我的JSON數據並且打印正常,但是我無法將其設置爲列表的數據源,因此我可以正確更新我的行。當打印this.state.dataSource時,它將以未定義的方式返回。我返回的JSON是一個數組。無法使用React-Native上的ListView更新數據源

export default class CoinCheckerRN extends React.Component { 

constructor(props) { 
    super(props); 
    const dataSource = new ListView.DataSource({rowHasChanged: (row1, row2) => row1 !== row2}); 
    this.state = { 
     dataSource: dataSource.cloneWithRows(['row 1', 'row 2']), 
    }; 

    this._renderRow = this._renderRow.bind(this); 

} 

componentDidMount() { 
    getCryptocurrencyData().then(function(result) { 
     console.log('??????', result[0].name) 
     this.setState({ dataSource: this.state.dataSource.cloneWithRows(result)}); 
     console.log('??', this.state.dataSource); 

    }).catch(function(error) { 
     console.log('!!!!!', error) 
    }); 



} 

_renderRow(data) { 
    return (
     <CoinCell coinName={'Bitcoin'} coinPrice={'£1,000'} coinPercentageChange={'-4.2%'}></CoinCell>  ) 
} 

render() { 
    return (
     <View> 
      <ListView 
       enableEmptySections 
       ref={'resultListView'} 
       dataSource={this.state.dataSource} 
       renderRow={(data) => this._renderRow(data)} 
       renderSeparator={(sectionId, rowId) => <View key={rowId} style={styles.separator} />} 
       renderHeader={() => <Header />} 
      /> 
     </View> 
    ); 
} 

}

任何幫助,將不勝感激

+0

你看到任何東西在ListView中? –

回答

0

管理與有輕微的調整此處所列的前一個答案的一個修正:

_getCoinData() { 
    getCryptocurrencyData().then(function(result) { 

     const ds = new ListView.DataSource({rowHasChanged: (row1, row2) => row1 !== row2}); 
     this.setState({ 
      dataSource: ds.cloneWithRows(result), 
      jsonData: result 
     }); 

     console.log('!!!', this.state.jsonData); 
    }.bind(this)) 
}