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

Babel与React:组件Props中对象解构报Unexpected token错误

React组件属性使用对象解构时语法报错问题

在React组件属性中使用对象解构时触发语法错误,错误提示为Unexpected token (172:13),报错代码位置如下:

170 |         }),
  171 |       }}
> 172 |       items={...sideNavigationSectionItems}
      |              ^
  173 |     />
  174 |   );
  175 | }

我的Babel配置应该支持对象展开语法,配置内容如下:

presets: [
      [
        '@babel/preset-env',
        {
          useBuiltIns: 'usage',
          corejs: '3.25',
          bugfixes: false,
        },
      ],
      '@babel/preset-react',
      '@babel/preset-typescript',
    ],
    plugins: [
      [
        '@babel/plugin-transform-runtime',
        {
          regenerator: true,
        },
      ],
      '@babel/plugin-proposal-object-rest-spread',
      '@babel/plugin-transform-destructuring',
      '@babel/plugin-transform-spread',
      '@babel/plugin-proposal-class-properties',
      '@babel/plugin-transform-classes',
    ],

问题原因与解决办法

你遇到的不是Babel配置问题,而是JSX属性写法错误:

  • 若要把sideNavigationSectionItems完整对象作为items属性的值传递给组件,直接赋值即可:
    items={sideNavigationSectionItems}
    
  • 若要把sideNavigationSectionItems对象中的所有键值对作为组件的独立属性传递(比如对象包含title、icon等字段,直接转为组件的对应属性),需去掉items=,直接写对象展开:
    {...sideNavigationSectionItems}
    

items={...sideNavigationSectionItems}属于非法JSX语法:JSX属性值必须是合法的JavaScript表达式,直接在属性值内展开对象无语义且不符合语法规范,因此Babel无法解析,抛出Unexpected token错误。你的Babel配置已包含@babel/plugin-proposal-object-rest-spread,完全支持对象展开语法,修正写法即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:11:05