You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过循环渲染React组件?解决渲染报错问题

React组件数组渲染报错解决方法

错误原因

你在fields数组中存放的是已经实例化的React元素(<Invites />),但在map里却尝试把它当作组件类型去再次实例化(<Item />)。React要求组件类型必须是内置组件字符串、类组件或函数组件,而你传入的是一个React元素对象,因此触发报错。

解决方法

方法一:直接渲染数组中的元素

因为fields里已经是生成好的React元素,无需再次实例化,直接将数组插入JSX即可:

const fields = [<Invites />]

return (
    <Card style={{ width: 600 }}>
        {fields}
    </Card>
)

如果需要用map(比如添加唯一key),直接返回数组元素:

const fields = [<Invites />]

return (
    <Card style={{ width: 600 }}>
        {fields.map((item, index) => (
            <React.Fragment key={index}>{item}</React.Fragment>
        ))}
    </Card>
)

方法二:数组存储组件引用,动态实例化

如果需要后续动态传递props或复用组件逻辑,更推荐在数组中存放组件的函数引用,而非实例:

// 数组存组件函数本身,不是实例
const fields = [Invites]

return (
    <Card style={{ width: 600 }}>
        {fields.map((Item, index) => <Item key={index} />)}
    </Card>
)

这种方式还可以灵活传递props:

const fields = [
  { component: Invites, props: { label: "自定义邀请" } }
]

return (
    <Card style={{ width: 600 }}>
        {fields.map(({ component: Item, props }, index) => (
            <Item key={index} {...props} />
        ))}
    </Card>
)

内容的提问来源于stack exchange,提问作者letters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:15:27