TypeError:undefined不是this.state.cafes.map附近的函数

时间:2019-05-28 13:01:13

标签: react-native

我正在尝试从后端传递一个咖啡馆,但没有任何运气。我不知道我在做什么错,但是任何帮助将不胜感激。顺便说一句。它是用打字稿写的。

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”附近)。

1 个答案:

答案 0 :(得分:0)

您的this.state.cafes包含非数组值。使用console.log(this.state.cafes)检查其值,以检查响应是否不是数组。

您不能映射不是数组的值。