recherche

Maison  >  Questions et réponses  >  le corps du texte

Générer plusieurs composants NextJS

J'apprends actuellement NextJS et je souhaite créer un site Web qui présente les multiples projets que j'ai créés avec.

J'ai un composant appelé "Tag" qui est un modèle de bouton avec du texte personnalisé et je souhaite le transmettre via des accessoires :


export default function Tag({val}) {
    return(
        <>
            <p>{val}</p>
        </>
    )
}

Ensuite, dans mon composant Block, je souhaite générer un nombre correspondant de composants Tag en fonction du nombre d'éléments du tableau transmis via les accessoires :

import Tag from "./Tag"

export default function Block({tags, name}) {
    return(
        <>
            <section>
                <div></div>
                <h2>{name}</h2>
                <div>
                    {tags.forEach(tag => <Tag val={tag} />)}
                </div>
            </section>
        </>
    )
}

Ensuite, ce composant Block est appelé dans la page d'accueil :

import Block from './components/Block'

export default function Home() {
  return (
    <>
      <Block tags={["Webflow", "UI Design"]} name="Projet 1" />
    </>
  )
}

Le problème est le suivant : aucune étiquette ne s'affiche.

Je pense que le problème est lié à la méthode forEach car lorsque j'essaie de générer une seule étiquette sans la méthode forEach, cela fonctionne bien.

Quel est le problème ?

P粉513318114P粉513318114496 Il y a quelques jours574

répondre à tous(1)je répondrai

  • P粉512729862

    P粉5127298622023-07-20 09:52:35

    Vous avez utilisé la méthode forEach, mais rien n'a été renvoyé dans cette fonction. Vous pouvez utiliser la méthode map du tableau.

    {tags.map(tag => <Tag val={tag} />)}


    const tags = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    const result = tags.forEach(tag => tag)
    console.log(result) //undefined
    
    const mapResult = tags.map(tag => tag)
    console.log(mapResult) //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    répondre
    0
  • Annulerrépondre