react-antd-column-resize(让你的table列可以拖拽列宽)

在前端开发中,表格是一种常见且重要的组件,用于展示大量的数据。Ant Design(简称 antd)是一个非常流行的 React UI 组件库,其中的 Table 组件功能强大且易于使用。然而,原生的 Table 组件并没有提供列宽拖拽调整的功能。为了实现这一功能,我们可以借助 react-antd-column-resize 这个库。

react-antd-column-resize

简介

react-antd-column-resize 是一个基于 react hooks 开发的 antd 表格(table)列宽拖动组件, 支持 antd4、antd5 和 ant-design/pro-components 以及所有基于 antd 开发的 table 组件。 其核心 hooksuseAntdColumnResize,可以自定义拖动的最小宽度、最大宽度和默认宽度方便快捷。 已经使用 antd4、antd5 官网中的 table 示例例进行测试,可以正常使用。

安装

css 复制代码
npm install --save react-antd-column-resize

# or use yarn

yarn add react-antd-column-resize

使用

javascript 复制代码
import { Button, Divider, Table } from 'antd';
import React from 'react';
import { useAntdColumnResize } from 'react-antd-column-resize';

const App = () => {
  const columns = [
    {
      title: 'Name',
      dataIndex: 'name',
      key: 'name',
      width: 200,
      align: 'center',
    },
    {
      title: 'Age',
      dataIndex: 'age',
      key: 'age',
      width: 100,
    },
    {
      title: 'Address',
      dataIndex: 'address',
      key: 'address',
      width: 300,
    },
    {
      title: 'phone',
      dataIndex: 'phone',
      key: 'phone',
      fixed: 'right',
      //width:"必须有一项不设置宽度,不然会造成拖动异常"
      //width:"必须有一项不设置宽度,不然会造成拖动异常"
      //width:"必须有一项不设置宽度,不然会造成拖动异常"
    },
  ];

  const data = [
    {
      key: '1',
      name: 'John Doe',
      age: 32,
      address: '123 Street, City',
      phone: '1588553336',
    },
    {
      key: '2',
      name: 'Jane Smith',
      age: 28,
      address: '456 Road, Town',
      phone: '1588553336',
    },
  ];
  const { resizableColumns, components, tableWidth, resetColumns } =
    useAntdColumnResize(() => {
      return { columns, minWidth: 100 };
    }, []);

  return (
    <div className="app">
      <Button onClick={resetColumns}>重置Columns</Button>
      <Divider />
      <Table
        columns={resizableColumns}
        dataSource={data}
        components={components}
        bordered
        scroll={{ x: tableWidth }}
      />
    </div>
  );
};

export default App;

地址

varown.github.io/react-antd-...

useAntdColumnResize API

useAntdColumnResize(setup: () => resizeDataType<Column>, dependencies: any[])

参数 说明 类型 默认值
setup 获取列配置函数 () => resizeDataType<Column> -
dependencies 更新依赖项 any[] -

resizeDataType setup 返回数据类型

参数 说明 类型 默认值
columns 列配置 object[] antd table columns -
minWidth 最小宽度 number 120
maxWidth 最大宽度 number 2000

返回数据

参数 说明 类型 默认值
resizableColumns 可拖动列配置 object[] antd table columns -
components antd table 组件 object -
tableWidth 表格宽度 number -
resetColumns 重置列 function -

注意事项

  1. columns 设置每项 width 时,默认该项是可拖动项,并且请确保含有唯一标识(dataIndex或者key)。
  2. columns 至少需要一项不设置 width,否则会拖动异常,minWidth 默认是未设置项宽度的最小宽度。 原因:当 columns 每项设置的宽度之和小于表格宽度时,会造成拖动异常,所以需要至少一项不设置宽度,让其自适应。
  3. minWidthmaxWidth 代表可拖动的距离,建议 minWidth等于 columns 设置的最小宽度项,最大宽度同理应大于columns 设置的最大宽度项。
  4. 请不要欺骗useAntdColumnResizedependencies 依赖项请按需添加,否则会造成无限循环。
相关推荐
海上彼尚2 分钟前
Nodejs也能写Agent - 3.基础篇 - Tools 与 Tool Calling
前端·人工智能·后端·node.js
用户125758524366 分钟前
GoFrame + Vue3 后台管理框架,CRUD 代码生成器一键搭 RBAC 权限系统
前端
七十二時_阿川7 分钟前
Electron 如何自定义菜单?这篇帮你实现原生体验!
前端·electron
七十二時_阿川12 分钟前
Electron App 速查表:生命周期事件、方法、平台差异
前端·electron
七十二時_阿川12 分钟前
Electron 多显示器开发?这篇帮你搞定屏幕坐标与窗口定位!
前端·electron
七十二時_阿川14 分钟前
Electron Tray API 详解:托盘图标、右键菜单、气泡通知
前端·electron
番茄炒韭菜16 分钟前
windows10下安装mise
前端
用户9385156350720 分钟前
AI全栈前端实战|DeepSeek + CC插件,1小时产出高质量外卖App落地页
前端
AI2中文网22 分钟前
App Inventor 2 向心力实验App - 探究向心力F与角速度ω、半径r、质量m的关系
前端·javascript·r语言
程序软件分享24 分钟前
vue多语言交易所系统/期货/合约交易/质押生息/盲盒/挖矿/跟单源码
前端·javascript·vue.js·期货平台源码