0
votes

ceci.state.xxx.map n'est pas une fonction

J'essaie d'afficher des données de l'état, mais lorsque j'essaie de cartographier des données, il y a une erreur disant

ceci.state.xxx.map n'est pas une fonction xxx

C'est un message d'erreur que je reçois


2 commentaires

Imprimer réponse.data.data et assurez-vous qu'il s'agit d'une matrice.


L'API vient de retourner un objet et non un tableau. Changez le point d'extrémité API qui vous donne un éventail de gifs.


3 Réponses :


0
votes

réponse.data.data est un objet et mappe n'est pas un Object fonction.

this.setstate ({gifs: réponse.data.data}) remplace gifs avec l'objet entrant au lieu de l'ajouter au tableau. Vous pouvez ajouter réponse.data.data dans l'état comme: xxx


2 commentaires

Comment je peux faire ça? Je suis complètement débutant à ce genre de choses


édité ma réponse pour vous montrer où le changement devrait être fait



0
votes

Le réponse.data, données code> à partir de https://api.giphy.com/v1/gifs/random?api_key=nnwaquw24k8gldmrxgtmawppqotkxxglq&tag=&ratrating=g code> est un objet . Vous ne pouvez pas mapper un objet.

ou si vous souhaitez ajouter l'objet à this.state.gifs code>, vous devez essayer ce code ci-dessous: P>

this.setState(prevState => ({
  gifs: [...prevState.gifs, response.data.data]
}));


1 commentaires

Merci ça marche, mais comment puis-je afficher toutes les données d'un objet? Il est possible de convertir un objet en tableau? donc je peux mapper



0
votes

Voici une démonstration de travail:

L'API répondra à une image GIF unique et c'est un objet, Dans votre état GIFS est une matrice, vous devez donc appuyer sur un nouvel objet dans une matrice GIFS ou vous pouvez utiliser l'opérateur de diffusion '...' [... this.state.gifs, newgifObject] code> à ajouter dans le tableau GIF. p>

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.0/axios.min.js"></script>
<div id="react"></div>


0 commentaires