react+antd怎么在拖拽表格列宽时固定最后一列的宽度不被影响改变
时间: 2024-11-22 11:41:00 浏览: 19
在React中使用Ant Design(antd)创建表格并且允许用户拖动列宽时,如果你想保持最后一个固定列的宽度不变,你可以通过一些技巧来实现这个功能。下面是一个简单的步骤:
1. **设置表头组件**:
使用`Table`组件的`columns`属性,并在列配置数组的最后添加一个特殊的列,它的`width`属性设置为你希望固定的值,例如`200`,并且设置`resizable`属性为`false`,表示此列不可被调整。
```jsx
import { Table } from 'antd';
const columns = [
...// 其他列配置
{
title: '固定列标题',
dataIndex: 'fixedColumnData',
width: 200,
resizable: false, // 阻止调整
},
];
```
2. **处理列宽变化**:
当用户拖拽其他列时,监听`onColumnsChange`事件。在这个回调函数里,检查新列宽数组,如果长度大于最初的列数减一,说明用户改变了某个列的宽度。在这种情况下,你需要将最后一个列(固定列)的宽度恢复到原始值。
```jsx
function handleColumnsChange(columns) {
if (columns.length > initialColumns.length - 1) {
const fixedIndex = columns.length - 1; // 固定列的位置
columns[fixedIndex].width = 200; // 恢复固定列宽度
}
}
<Table columns={columns} onColumnsChange={handleColumnsChange} />
```
3. **保存初始列宽**:
初始化时存储所有列的初始宽度,以便在需要时恢复。
```jsx
const [initialColumns, setInitialColumns] = useState([]);
useEffect(() => {
setInitialColumns(columns);
}, [columns]); // 当columns发生变化时更新初始列宽
//...
```
阅读全文