我无法使用 .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