3
votes

La fonction JS .map n'affiche aucun élément

J'ai une fonction .map () sur un tableau.

Quand je fais un console.log (objet) dans le .map, il enregistre l'objet .
Mais quand je fais

  • {object.name}
  • cela ne montre rien. Pas non plus dans l'outil d'inspection.

    Composant:

    export const StyledImagesList = styled.ul;
    

    StyledImagesList n'a pas de style

    <StyledImagesList>
        {this.state.images.map((imageObject, key) => {
            // <img src={imageObject.contentUrl} title={imageObject.name} />
            <li key={key}>{imageObject.name}</li>
            {console.log(imageObject)}
        })}
    </StyledImagesList>
    

    Une idée de la raison pour laquelle mes li ne seront pas visibles?


    2 commentaires

    vous devez renvoyer quelque chose dans une carte


    @JaromandaX mais bien sûr ... Merci pour l'aide;)


    3 Réponses :


    2
    votes

    Le renvoi de l'élément

  • dans votre rappel map () devrait résoudre le problème:
    <StyledImagesList>
        { this.state.images.map((imageObject, key) => <li key={key}>{imageObject.name}</li>) }
    </StyledImagesList>
    

    Si la connexion à la console était pas nécessaire, vous pourriez obtenir le même résultat avec l'équivalent plus concis de:

    <StyledImagesList>
        { this.state.images.map((imageObject, key) => {
            // <img src={imageObject.contentUrl} title={imageObject.name} />
    
            /* Logging would need to happen before the return */
            console.log(imageObject);
    
            /* Add return here */
            return <li key={key}>{imageObject.name}</li>
        }) }
    </StyledImagesList>
    


    2 commentaires

    Il y a un raccourci ici pour la journalisation => console.log (imageObject) ||

  • car le journal est un faux retour.


    Agréable! Merci pour cela, cela pourrait être utile 😊



  • 2
    votes

    Le retour est manquant. Soit

        this.state.images.map((imageObject, key) => (
            <li key={key}>{imageObject.name}</li>
        ))
    

    ou

        this.state.images.map((imageObject, key) => {
            return <li key={key}>{imageObject.name}</li>;
        })
    


    0 commentaires

    0
    votes

    Map () utilise return dans son bloc de code afin de pousser chaque élément vers un NOUVEAU tableau. Cela ne touche pas à l'original.

    Le code que vous faites à l'intérieur de la boucle s'exécute en fait ... C'est juste que vous n'avez rien en retour à montrer.

    Faire

    return <li key={key}>{imageObject.name}</li>
    

    vous construira un nouveau tableau avec ces éléments html pour vous.

    • La méthode map () crée un nouveau tableau avec les résultats de l'appel d'une fonction pour chaque élément du tableau.

    • La méthode map () appelle la fonction fournie une fois pour chaque élément d'un tableau, dans l'ordre.

    • Remarque: map () n'exécute pas la fonction pour les éléments de tableau sans valeurs.

    • Remarque: map () ne modifie pas le tableau d'origine.


    0 commentaires