我正在尝试从后端传递一个咖啡馆,但没有任何运气。我不知道我在做什么错,但是任何帮助将不胜感激。顺便说一句。它是用打字稿写的。
interface Props {}
interface State {
cafes: {
Id: number;
Name: string;
Address: string;
PhoneNo: string;
PriceRange: number;
OpenTime: Date;
CloseTime: Date;
Zip: string;
CustomerType: number;
Description: string;
City: string;
}[];
}
export default class ListCafes extends React.Component<Props, State> {
static navigationOptions: NavigationScreenOptions = {
headerTitle: "Cafes"
};
constructor(props: Props) {
super(props);
this.state = {
cafes: []
};
}
async componentDidMount() {
try {
let cafes = await json(
"https://toobuzyservice.azurewebsites.net/cafe/zip/9000?format=json"
);
this.setState({ cafes });
} catch (error) {
console.log(error);
Alert.alert(
"Ups! Something went wrong.. Our monkey are going to fix it! Hold on!!"
);
}
}
renderCafes() {
return this.state.cafes.map(cafes => {
return <CafePreviewCard key={cafes.Id} cafe={cafes} />;
});
}
render() {
return (
<View style={styles.container}>
<ScrollView>{this.renderCafes()}</ScrollView>
</View>
);
}
}
保持错误:TypeError:未定义不是renderCafes函数的函数(在“ this.state.cafes.map”附近)。
答案 0 :(得分:0)
您的this.state.cafes
包含非数组值。使用console.log(this.state.cafes)
检查其值,以检查响应是否不是数组。
您不能映射不是数组的值。