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

React Hooks中使用.map()及扩展运算符传参渲染组件报错求助

报错原因及解决方法

报错原因

你写的 <Item data={...data} /> 是语法错误。JSX 中,属性值里的 JavaScript 表达式需用单对大括号包裹,但 ...data 是对象展开语法,它会把 data 的所有键值对展开成多个独立项,而 data 这个 props 只能接收单个值,这种写法不符合 JSX 语法规则,所以解析器抛出了「Unexpected token ...」错误。

两种正确写法

根据你的需求选择对应方式:

  • 需求1:把data的所有属性作为独立props传给Item
    直接在组件标签上使用对象展开:

    <Item {...data} />
    

    之后在Item里可以直接通过props.id、props.title(假设data包含这些属性)获取对应值。

  • 需求2:把展开后的对象作为data属性的值传递
    把展开后的对象再用一对大括号包裹,生成新对象赋值给data:

    <Item data={{...data}} />
    

    此时Item需要通过props.data来访问这个对象。

额外优化

原代码里的 products && products?.products?.map 存在冗余,可选链?.已经会自动处理products为null/undefined的情况,直接写成 products?.products?.map 即可:

<div className="products">
  {products?.products?.map((data) => (
    <div key={data.id}>
      <Item {...data} /> {/* 或按需求用 data={{...data}} */}
    </div>
  ))}
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:12:52