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

如何将对象数组映射输出为Material-UI的MenuItem列表组件

问题原因

  • map回调参数使用错误:Array.prototype.map的第一个入参是当前遍历到的数组元素对象,第二个入参是元素索引,你之前直接写(id, name)无法正确读取对象内的属性
  • 属性未正确利用:数组中存储的RGB颜色值没有被用到,ListItemIcon无实际显示内容

正确实现代码

两种写法都可以,按需选择:

写法1:先取元素对象再解构

{statusColorsArr.map((item) => {
  const { id, name, colourR, colourG, colourB } = item
  return (
    <MenuItem key={id} value={name} className={classesF.A}>
        <Checkbox className={classesF.D} />
        <ListItemText primary={id} />
        <ListItemText primary={name} />
        {/* 渲染对应状态色块 */}
        <ListItemIcon>
          <div style={{ 
            width: '18px', 
            height: '18px', 
            backgroundColor: `rgb(${colourR},${colourG},${colourB})`,
            borderRadius: '3px'
          }} />
        </ListItemIcon>   
    </MenuItem>
  )
})}

写法2:参数位置直接解构(更简洁)

{statusColorsArr.map(({id, name, colourR, colourG, colourB}) => (
    <MenuItem key={id} value={name} className={classesF.A}>
        <Checkbox className={classesF.D} />
        <ListItemText primary={id} />
        <ListItemText primary={name} />
        <ListItemIcon>
          <div style={{ 
            width: '18px', 
            height: '18px', 
            backgroundColor: `rgb(${colourR},${colourG},${colourB})`,
            borderRadius: '3px'
          }} />
        </ListItemIcon>   
    </MenuItem>
))}

实现说明

  • 遵循React列表渲染规范,用唯一id作为key值,避免渲染异常
  • 利用数组中存储的RGB值生成对应状态的色块,符合数组定义的设计需求
  • 所有属性读取路径正确,不会出现undefined类报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:06:04