antd table组件中列宽拖拽resizable未生效解决办法

本文介绍了如何在AntDesign的table组件中正确使用`@resizeColumn`属性,包括设置ref,定义columns的width、minWidth、maxWidth和resizable属性,并实现handleResizeColumn方法来动态调整列宽。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 首先,table组件中需要绑定一个方法@resizeColumn="handleResizeColumn"。

<a-table
    :dataSource="data"
    :columns="columns"
    @resizeColumn="handleResizeColumn"
></a-table>

2. 之后,columns使用ref声明,我就是因为没有用ref声明导致的,并且需要有width,minWidth,maxWidth,resizable 几个参数。

const columns = ref([
  {
    title: '姓名',
    dataIndex: 'userName',
    key: 'userName',
    resizable: true,
    width: 200,
    minWidth: 200,
    maxWidth: 800,
    align: 'center',
  },
]);

3. table中绑定的方法@resizeColumn="handleResizeColumn"

function handleResizeColumn(w, col) {
  col.width = w;
}

### 设置 Ant Design Table 的最小度 为了确保 `a-table-column` 的具有最小度,在实际项目中可以采用多种方法来实现这一需求。 #### 方法一:通过 CSS 自定义样式 可以通过自定义 CSS 类的方式为特定设置最小度。这种方式适用于希望全局应用相同样式的场景: ```css .custom-min-width { min-width: 100px !important; } ``` 在 JSX 中使用此类名时,将其应用于目标上即可生效[^1]。 ```jsx <Table columns={columns} dataSource={data}> <Column title="Name" dataIndex="name" key="name" className="custom-min-width"/> </Table> ``` #### 方法二:动态调整并保持最小值 对于需要支持用户交互式调整的情况,则可以在处理函数内加入逻辑判断以防止低于设定阈值。例如,在 `handleResize.tsx` 文件中的 `handleResize` 函数里增加如下代码片段[^4]: ```typescript function handleResize( col: { key?: any; width?: number }, size: { width: number }, oldColumn: Array<any>, setColumn: Function, ) { const MIN_WIDTH = 80; // 设定最小度 let adjustedWidth = Math.max(size.width, MIN_WIDTH); const newColumns = [...oldColumn]; newColumns.forEach((item) => { if (item.key === col.key && item.width !== undefined) { item.width = adjustedWidth; } }); setColumn(newColumns); } export default handleResize; ``` 这种方法允许开发者灵活控制每表格项的具体行为,并且能够很好地与其他功能集成在一起工作。 #### 方法三:利用第三方库 react-resizable 结合 AntD 表格组件 如果想要更强大的拖拽调整体验,还可以引入 `react-resizable` 库配合 Ant Design 使用。这不仅限于简单的固定最小度,还提供了更加丰富的用户体验选项[^3]. 需要注意的是,当最后一为非固定的(即未设置 `fixed` 属性),则不应为其分配具体的度值以便其可以根据剩余空间自动伸缩[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值