注意:
① 采用的是React antDsign 4.x版本
② 需重新处理data数据
实现效果
代码实现
- import React from 'react';
- import { Table } from 'antd';
- const data = [
- {
- key: '0',
- name: '张三',
- age: 22,
- sex: '男',
- },
- {
- key: '1',
- name: '李四',
- age: 42,
- sex: '男',
- },
- {
- key: '2',
- name: '小丽',
- age: 22,
- sex: '女',
- },
- {
- key: '3',
- name: '小红',
- age: 31,
- sex: '女',
- },
- {
- key: '4',
- name: '赵大胆',
- age: 42,
- sex: '男',
- },
- {
- key: '5',
- name: '李建国',
- age: 62,
- sex: '男',
- },
- ];
- const columns = [
- {
- title: '姓名',
- dataIndex: 'name',
- key: 'name',
- align: 'center',
- },
- {
- title: '性别',
- dataIndex: 'sex',
- key: 'sex',
- align: 'center',
- render(_, row) {
- return {
- children: row.sex,
- props: {
- rowSpan: row.rowSpan,
- },
- };
- },
- },
- {
- title: '年龄',
- dataIndex: 'age',
- key: 'age',
- align: 'center',
- },
- ];
- //处理data数组
- const createNewData = (data) => {
- return data
- .reduce((result, item) => {
- if (result.indexOf(item.sex) < 0) {
- result.push(item.sex);
- }
- return result;
- }, [])
- .reduce((result, sex) => {
- const children = data.filter((item) => item.sex === sex);
- result = result.concat(
- children.map((item, index) => ({
- ...item,
- rowSpan: index === 0 ? children.length : 0,
- })),
- );
- return result;
- }, []);
- };
- const App = () => (
- <Table
- columns={columns}
- dataSource={createNewData(data)}
- bordered
- size="small"
- />
- );
- export default App;
复制代码 注:本人前端小白 ,如有不对的地方还请多多指教
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |