【发布时间】:2019-03-11 22:12:28
【问题描述】:
export default class LaunchingScreen extends React.Component {
constructor(props) {
super(props);
this.state = {
isLoading: true,
dataSource: null,
refreshing: false
};
}
//When screen is pulled down this calls for fresh through the state its int
_onRefresh = () => {
this.setState({ refreshing: true });
this.componentDidMount().then(() => {
this.setState({ refreshing: false });
});
};
//Gets data from API
componentDidMount() {
return fetch("https://launchlibrary.net/1.4/launch?mode=verbose")
.then(response => response.json())
.then(responseJson => {
this.setState({
isLoading: false,
dataSource: responseJson.launches
});
})
.catch(error => {
console.log(error);
});
}
//Renders Screen
render() {
//Refresh if statement
if (this.state.isLoading) {
return (
<View style={styles.container}>
<ActivityIndicator />
</View>
);
} else {
//Launches is what its called on later to display what is being said in launches
let launches = this.state.dataSource.map((item, key) => {
return (
<View key={key} style={styles.container}>
<View style={styles.subcontainer}>
<Text>{item.missions[0].name}</Text>
</View>
</View>
);
});
//Allows the screen to be scrollable w/ refresh control
return (
<View style={styles.Background}>
<ScrollView
contentContainerStyle={styles.contentContainer}
refreshControl={
<RefreshControl
refreshing={this.state.refreshing}
onRefresh={this._onRefresh}
/>
}
>
{launches}
</ScrollView>
</View>
);
}
}
}
我遇到的问题是从数组中的启动库 API 获取数据(任务名称)。我获取数据并将它们放入项目/密钥中。当我通过 item.missions[0].name (missions[0] 是数组) 调用任务名称时,我得到一个 TypeError: undefined is not an object。有人告诉我,我必须检查任务是否未定义,但不明白解决方案。
【问题讨论】:
标签: javascript arrays reactjs api react-native