我有以下来自我的React组件的代码:
<div className="mainApp">
<div className="pkgsList">
{pkgData.map((p) =>
<h3 key={p.name}>{p.name}</h3>
)}
</div>
</div>
)
在本例中,pkgData
是一个对象数组,它试图描述本场景中的包。每个对象都包含一个字符串属性name
和一个数组属性sources
,其中每个项也是一个对象。我想在上面的h3
元素下面打印sources
中的项目(每个项目有几个属性),但我似乎不知道如何在上面的内容上添加更多的HTML / JSX-任何帮助都将不胜感激。
我一直尝试为每个p调用map,但无论我是将它 Package 在()
上还是仅 Package 在{}
上,都会遇到错误。
{p.map((s) => {
})
因此,生成的div代码将是:
<div className="pkgList">
{pkgData.map((p) =>
<h3 key={p.name}>{p.name}</h3>
{p.map((c) => {
})
)}
</div>
不会让我的react应用程序编译成功。
2条答案
按热度按时间ej83mcc01#
错误Map
首先,
pkgData.map
中的嵌套Map是错误的。因为p
本身不是数组。Map应该是这样的JSX错误
第二,就像@大卫在评论中说的那样,由于JSX在后台的工作方式,您不能有多个顶级元素。例如,代码
相当于这个
因此,如果在顶层返回多个JSX元素,React.createElement将无法工作。因此,你应该在顶层用一些标签 Package 这些东西,比如fragments(<>),div等。
比如说
仅供参考:https://react.dev/reference/react/createElement#creating-an-element-without-jsx
pkwftd7m2#
在map中只能返回1个jsx元素,就像在普通组件中一样。如果你想在map函数中呈现多个元素,你可以把代码 Package 在一个react片段中,如下所示: