美文网首页
Ant Design - Table Columns中dataI

Ant Design - Table Columns中dataI

作者: 我是哈斯 | 来源:发表于2021-08-17 16:02 被阅读0次

在Ant Design中,如果我们要使用table,可以到官网文档中查看详细的例子。
但是在例子中,你会发现类似以下的数据结构:

const columns = [{
  title: 'Name',
  dataIndex: 'name',
  key: 'name',
  render: text => (<a href="javascript:;">{text}</a>),
}, {
  title: 'Age',
  dataIndex: 'age',
  key: 'age',
}, {
  title: 'Address',
  dataIndex: 'address',
  key: 'address',
}, {
  title: 'Tags',
  key: 'tags',
  dataIndex: 'tags',
  render: tags => (
    <span>
      {tags.map(tag => <Tag color="blue" key={tag}>{tag}</Tag>)}
    </span>
  ),
}, {
  title: 'Action',
  key: 'action',
  render: (text, record) => (
    <span>
      <a href="javascript:;">Invite {record.name}</a>
      <Divider type="vertical" />
      <a href="javascript:;">Delete</a>
    </span>
  ),
}];

可以看到,数组的object中有key,dataIndex,title,render这些keys。
title以及render都好理解,title指的是thead中每个th的显示字段,render指的是用什么样的方式来显示数据(通常为一个返回ReactNode的函数)。
那么dataIndex指的是什么意思呢?

我们先来看一下官方文档怎么说:

Property Description Type
dataIndex Display field of the data record, could be set like a.b.c、a[0].b.c[1]列数据在数据项中对应的 key,支持 a.b.c、a[0].b.c[1] 的嵌套写法 string

由于英文文档解释的很潦草,这里我把中文文档中的解释也加了进去。

我们看到,假设我们dataIndex为name,那么我们在table的dataSource中指定的每一个数据中,都必须包含有name为key的对象,而显示出的数据就是相应key对应的数

const data = [{
  key: '1',
  name: 'John Brown',
  age: 32,
  address: 'New York No. 1 Lake Park',
  tags: ['nice', 'developer'],
}, {
  key: '2',
  name: 'Jim Green',
  age: 42,
  address: 'London No. 1 Lake Park',
  tags: ['loser'],
}, {
  key: '3',
  name: 'Joe Black',
  age: 32,
  address: 'Sidney No. 1 Lake Park',
  tags: ['cool', 'teacher'],
}];

假设我们的数据结构更为复杂一些,例如name: {firstname: 'Eagle', lastname: 'Luo'},那么我们需要将dataIndex改为name.firstname或name.lastname来获取下一层级的数据。

结合以上例子来看,dataIndex的含义就比较明确了。需要注意的一点,如果我们已经使用了唯一的dataIndex,那么我们就不再需要给每个column加上key了。

相关文章

网友评论

      本文标题:Ant Design - Table Columns中dataI

      本文链接:https://www.haomeiwen.com/subject/julibltx.html