开发者问题收集

我无法使用 .map 从数据库渲染数据

2020-08-26
76

我目前正在开发一个 React Native 应用,我遇到了一个关于从数据库中获取渲染信息(在数组中)的问题。为此,我必须编写一个 .map

我从 console.log 中的获取数据中接收数据。

当我用这个“()”调用我的函数时。

<Text>Choisissez votre Choix Club </Text>
        <TouchableOpacity>
          <View>
            <Text>{this.renderMesClubs()}</Text>
          </View>
        </TouchableOpacity>

出现一条错误消息

TypeError: undefined is not an object (evaluating '_this.state.sport.club.map')

您可以在下面找到所有代码页。

class ChoixClub extends Component {
  constructor(props) {
    super(props);
    this.state = {
      sport: {club: []},
    };
  }

  getMesClubs = () => {
    const headers = new Headers({'Content-type': 'application/json'});
    const options = {
      method: 'GET',
      headers: headers,
    };

    fetch('http://localhost:8080/inscription/sport', options)
      .then((response) => {
        return response.json();
      })
      .then(
        (data) => {
          const club = JSON.stringify(data);
          this.setState({sport: club});
          console.log(this.state.sport.club);
        },

        (err) => {
          console.log(err);
        },
      );
  };

  renderMesClubs = () => {
    return this.state.sport.club.map((element) => {
      return (
        (
          <View className="articles">
            <Text>{element.nomClub}</Text>
          </View>
        ),
        console.log(element.nomClub)
      );
    });
  };
  componentDidMount() {
    this.getMesClubs();
  }

  render() {
    return (
      <SafeAreaView>
        <Text>Choisissez votre Choix Club </Text>
        <TouchableOpacity>
          <View>
            <Text>{this.renderMesClubs()}</Text>
          </View>
        </TouchableOpacity>

        <Text>Choisissez votre rival</Text>
        <TouchableOpacity></TouchableOpacity>
      </SafeAreaView>
    );
  }
}

export default ChoixClub;

我希望我的信息足够清楚,可以帮助您解决,并提前感谢您的回答!

2个回答

您正在调用json.stringify(数据),该(数据)将“数据”转换为字符串。假设服务器正在返回有效的json,然后您已经在执行的呼叫响应。字符串。

检查数据是否真的是一个数组,您可以使用:

883185711
user1852503
2020-08-26

您的所有数据实际上都包含在一个数组中,因此您需要指定元素或对其进行迭代。正如@user1852503所说,不需要 JSON.stringify,因为 .then((response) => { return response.json(); }) 就可以解决问题

// Let's your data
let data = [ { "_id": "5f44dcc0a3da3a3008a71e5d", "sport": { "_id": "5f44dcc0a3da3a3008a71e5e", "club": [ { "_id": "5f44dcc0a3da3a3008a71e5f", "nomClub": "String", "classement": "String", "dateMatch": "String", "classementDB": "String" } ] }, "__v": 0 } ];



data[0].sport.club.map(element => {
// I just console log it to see if it works
console.log(element.nomClub)
})
Alvaro Lozano
2020-08-26