Ant Design的Table组件可以自定义表格的行类名(class name),以便在渲染表格时自定义样式。但当表格内容复杂,需要依据多个条件来设置行类名时,通过Ant Design提供的API方法可能不够灵活。
此时,我们可以通过在render()中编写JSX代码来实现更加自由的条件判断。下面是一个示例代码:
import { Table } from 'antd';
function AppTable(props) {
const { dataSource } = props;
const getRowClassName = (record, index) => {
let className = '';
if (record.score < 60) {
className = 'danger-row';
} else if (record.score >= 60 && record.score < 80) {
className = 'warning-row';
} else if (record.score >= 80 && record.score < 90) {
className = 'success-row';
} else {
className = '';
}
if (record.status === 'unpublished') {
className += ' unpublished-row';
}
return className;
};
const columns = [
{
title: '姓名',
dataIndex: 'name',
key: 'name',
},
{
title: '分数',
dataIndex: 'score',
key: 'score',
},
{
title: '状态',
dataIndex: 'status',
key: 'status',
},
];
return (
);
}
const dataSource = [
{
key: '1',
name: '小明',
score: 80,
status: 'published',
},
{
key: '2',
name: '小红',
score: 70,
status: 'unpublished',
},
{
key: '3',
name: '小刚',
score: 90,
status: 'published',
},
];
ReactDOM.render(
,
mountNode,
);
上面代码中的getRowClassName()函数根据表格数据对象的score属性和status属性来设置行类名。此外,还提供了四种不同的行类名样式。在返回结果时,根据情况对className进行连续添加。
通过在render()中自定义getRowClassName()函数可实现更加多样化的条件判断。