我正在使用 fetch
API 来访问数据,事实证明,当访问我在数据源中设置的数据时,它会返回:
Warning: [TypeError: undefined is not an object(evaluating 'response.data.onwardflights')]
我确信我已正确获取数据,因为我已通过将数据打印到控制台来看到数据。
这是相同的代码!
'use strict';
import React, {Component} from 'react';
import {StyleSheet, View, Text, ListView, ScrollView} from 'react-native';
const ds = new ListView.DataSource({rowHasChanged: (row1, row2) => row1 !== row2});
class BusList extends Component {
constructor() {
super();
// const ds = new ListView.DataSource({rowHasChanged: (row1, row2) => row1 !== row2});
this.state = {
dataSource: ds.cloneWithRows([]),
getData: []
};
}
componentDidMount() {
this.loadJSONData();
}
loadJSONData() {
fetch('api')
.then((response) => {
this.setState({getData: response})
this.setState({dataSource: ds.cloneWithRows(response.data.onwardflights)})
return response.json()
})
.then((responseJSON) => {
console.log(responseJSON)
return this.setState({dataSource: this.state.dataSource.cloneWithRows(responseJSON)});
})
.catch((error) => {
console.warn(error);
});
}
renderRow(rowData) {
return (
<View>
<Text>{rowData.origin}</Text>
</View>
);
}
render() {
return (
<View>
<ListView
dataSource = {this.state.dataSource}
enableEmptySections = {true}
renderRow = {(rowData) => <Text>{rowData}</Text>}
/>
</View>
);
}
}
module.exports = BusList;
任何帮助将不胜感激!
最佳答案
当然,response.data.onwardflights
将是未定义
,因为您在阅读之前尚未调用response.json()
数据。先调用该方法,然后再读取数据。请阅读this article
关于javascript - react native : Accessing JSON data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42343941/