J'obtiens une erreur qui dit "TypeError: this.state.users.map n'est pas une fonction" cependant il y a une variable de liste dans mon état qui est liée donc je ne sais pas pourquoi la fonction de carte ne fonctionne pas.
getList(){ console.log("FUNCTION CALLED"); axios.get("/api/mentorRequests") .then((result) => { console.log("Logging results", result); this.setState({users: result}); }) } render() { console.log("USERS", this.state.users); return ( <div className=""> {this.state.users.map((user) => <div> {user.displayName} </div> )} </div> ); }
4 Réponses :
Vous devriez vérifier et voir si la réponse que vous obtenez est un tableau car .map est une fonction de tableau que vous ne pouvez pas utiliser sur autre chose, donc il vous donnera TypeError car le type de l'objet que vous essayez d'utiliser .map n'est pas correct.
Vous pourriez oublier d'initialiser state.users
avec un tableau vide.
this.state = { users: [] }
Essayez de faire ce qui suit:
getList() { console.log("FUNCTION CALLED"); axios.get("/api/mentorRequests") .then((result) => { console.log("Logging results", result); this.setState({users: result}); }) } render() { console.log("USERS", this.state.users); return ( <div className=""> {this.state.users && this.state.users.map((user) => <div> {user.displayName} </div> )} </div> ); }
Ma fonction getList () retournait un objet json et je définissais le tableau dans mon état sur l'objet json donc il y avait une incompatibilité de type. Merci à tous ceux qui ont aidé.
Veuillez fournir plus d'informations. map () est une méthode de tableau, donc le problème possible est que l'état de vos utilisateurs n'est pas un tableau. essayez d'initialiser l'état des utilisateurs avec un tableau vide et vérifiez que le résultat que vous obtenez de getList () est un tableau.