搜索

首页  >  问答  >  正文

生成多个NextJS组件

我目前正在学习NextJS,我想创建一个展示我用它创建的多个项目的网站。

我有一个名为"Tag"的组件,它是一个带有自定义文本的按钮模板,我想通过props传递它:


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

然后,在我的Block组件中,我想根据通过props传递的数组中的元素数量生成相应数量的Tag组件:

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>
        </>
    )
}

然后,这个Block组件在主页中被调用:

import Block from './components/Block'

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

问题是:没有显示任何标签。

我认为问题与forEach方法有关,因为当我尝试在没有forEach方法的情况下生成单个标签时,它可以正常工作。

问题在哪?

P粉513318114P粉513318114492 天前569

全部回复(1)我来回复

  • P粉512729862

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

    你使用了forEach方法,但在这个函数中没有返回任何内容。你可以数组的map方法。

    {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]

    回复
    0
  • 取消回复