在新建对象中访问另一对象属性报Unexpected token错误如何解决?
问题根因
你遇到的是JS对象字面量语法错误,报错Parsing error: Unexpected token, expected ","是编译阶段就触发的语法解析失败,和你的JSON返回结构、React useState初始化逻辑无关。
ES6的对象属性简写规则仅支持直接传入变量名,不支持携带.属性访问符的表达式。你写的{ partner.name }不符合语法要求,有两种合法写法可以实现需求:
- 显式声明键值对
result.map((partner,index)=>{ const obj = { name: partner.name, class: partner.class } })
- 先解构属性再用简写(
class是JS保留字,建议重命名避免后续踩坑)
result.map((partner,index)=>{ const { name, class: partnerClass } = partner const obj = { name, partnerClass } })
补充的useState代码修复方案
你填充state的代码存在完全相同的语法问题,并且要注意如果只传两个属性会覆盖state内其他原有字段,建议用扩展运算符保留原有值,修正后的代码如下:
setModalContent({ // 保留原有state的其他字段,不需要保留可以删除这行 ...modalContent, // 显式对应你初始化时定义的state键名 partner_name: partner.partner_logo, coupon_image: partner.coupon_image })
附加注意事项
- 如果不需要使用
map返回的新数组,只是遍历数据的话建议改用forEach,避免产生无用的新数组占用内存 - 注意确认JSON返回的每个partner对象确实存在你访问的属性,避免语法修复后出现
undefined相关的运行时错误
内容的提问来源于stack exchange,提问作者Altair21
相关产品推荐
相关产品推荐

