You need to enable JavaScript to run this app. DataGrid配置列时如何绑定嵌套对象的子元素属性
优惠活动
大模型
产品
解决方案
定价
更多

DataGrid配置列时如何绑定嵌套对象的子元素属性

嵌套属性列配置不生效的原因

你之前直接用sub.firstSub、sub/firstSub作为field的写法无法生效,是因为DataGrid默认会直接把field的取值作为行对象的一级键名读取值,等价于执行row['sub.firstSub']、row['sub/firstSub'],不会自动做路径解析,自然读不到嵌套对象的属性。

通用实现方案

最灵活的方式是使用列配置的valueGetter属性手动指定取值逻辑,field仅需保证是整个列配置数组中的唯一标识,不需要对应行对象的真实键名。

参考代码

const columns = [
  { field: 'first', headerName: 'First', width: 70 },
  {
    // field只要全局唯一即可,可自定义命名,避免和其他列的field冲突
    field: 'sub_firstSub',
    headerName: 'Sub One',
    width: 70,
    // 从参数中解构出行对象,直接读取嵌套属性
    valueGetter: ({ row }) => row.sub.firstSub
  },
  {
    field: 'sub_secondSub',
    headerName: 'Sub Two',
    width: 130,
    valueGetter: ({ row }) => row.sub.secondSub
  }
];

容错处理

如果存在行数据没有sub字段的情况,可以在取值时加可选链避免页面报错:

valueGetter: ({ row }) => row.sub?.firstSub
其他可选方案

也可以提前对行数据做拍平处理,把嵌套属性直接提取为一级字段,比如把原数据处理为{ first: 'firstValue', second: 'secondValue', firstSub: 'xxx', secondSub: 'xxx' }结构,之后就可以直接用普通的field配置列,不需要额外写valueGetter。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 14:15:00