react中使用antd的table生成一个表格,columns包括财务组织,hr部门,是否默认,是否默认为checkbox,是否默认永远只能有一条数据被勾选,
时间: 2024-10-16 11:22:01 浏览: 32
在React中使用Ant Design库(antd)创建一个表格时,你可以按照以下步骤设置一个包含财务组织、HR部门以及复选框列的表格,并确保默认状态下只有一个项可以被选中:
1. 首先,你需要安装`antd`和`@ant-design/icons`依赖,如果还没有安装,可以在项目目录下运行:
```
npm install antd @ant-design/icons
```
2. 导入需要的组件:
```jsx
import React from 'react';
import { Table, Input, Checkbox } from 'antd';
import CheckIcon from '@ant-design/icons/CheckOutlined'; // 用于复选框图标
```
3. 创建列配置数组(column):
```jsx
const columns = [
{
title: '财务组织',
dataIndex: 'financeDepartment',
key: 'financeDepartment',
},
{
title: 'HR部门',
dataIndex: 'hrDepartment',
key: 'hrDepartment',
},
{
title: '默认',
dataIndex: 'default',
key: 'default',
render: (text) => (
<Checkbox defaultChecked={!!text} onChange={(e) => handleDefaultChange(e)} />
),
width: '50px', // 可调整宽度
},
];
```
4. 定义`handleDefaultChange`函数,处理默认值的变化:
```jsx
const handleDefaultChange = (e) => {
const checked = e.target.checked;
// 如果已经有一个默认项,取消其默认状态
if (isAnyRowChecked()) {
setDefault(null); // 假设你有默认值的状态管理,如useState 或者 Redux
}
else {
setDefault(checked);
}
// 更新其他行的不可选状态
updateOtherRowsState();
};
// 辅助方法,检查是否有其他已选中的行
const isAnyRowChecked = () => [...tableData].some(row => row.default === true);
// 更新其他行的默认值为false
const updateOtherRowsState = () => {
tableData.forEach((row, index) => {
if (index !== defaultIndex && row.default) {
row.default = false;
// 更新UI
}
});
};
```
5. 使用`Table`组件,确保传入`columns`和你的数据`tableData`:
```jsx
const MyTable = () => {
// ... 数据获取和初始状态管理
return (
<Table
dataSource={tableData}
columns={columns}
onRow={(record) => ({
// 当点击某一行时,更新对应的default值和处理其他行的默认状态
onClick: () => handleRowClick(record),
})}
/>
);
};
export default MyTable;
```
6. `handleRowClick`函数可根据实际业务需求来处理单击行的操作,比如记录当前行索引`defaultIndex`。
注意:以上代码假设你已经有了表格的数据`tableData`以及状态管理如`default`和`defaultIndex`。在实际应用中,你需要根据具体情况进行适当的调整。同时,为了保证默认只有一项被选中,建议结合表单或状态管理技术来控制全局状态。
阅读全文