项目需求:react项目中,做一个可以通过鼠标拖动改变列宽的表格

第一步:安装react-resizable插件

npm install  react-resizable --save

第二步:在项目中封装Resizable组件

Resizable.js

import * as React from "react";
import { Table } from "antd";
import "antd/dist/antd.css";
import { Resizable } from "react-resizable";
import "./resizeable-table.less";class ResizeableTitle extends React.Component {render() {const { onResize, width, onClick, ...restProps } = this.props;if (!width) {return <th {...restProps} />;}return (<Resizablewidth={width}height={0}onResizeStart={() => (this.resizing = true)}onResizeStop={() => {setTimeout(() => {this.resizing = false;});}}onResize={onResize}><thonClick={(...args) => {if (!this.resizing && onClick) {onClick(...args);}}}{...restProps}/></Resizable>);}
}class ResizeableTable extends React.PureComponent {constructor(props) {super(props);this.state = {columns: props.columns};}components = {header: {cell: ResizeableTitle}};componentDidMount() {const handlers = document.querySelectorAll(".react-resizable .react-resizable-handle");handlers.forEach((handler) =>handler.addEventListener("click", (e) => {return false;}));}render() {const columns = this.state.columns.map((col, index) => ({...col,onHeaderCell: (column) => ({width: column.width,onResize: this.handleResize(index)})}));const components = Object.assign({},this.props.components,this.components);return <Table{...this.props}  pagination={false}columns={columns} components={components} />;}handleResize = (index) => (e, { size }) => {e.stopImmediatePropagation();this.setState(({ columns }) => {const nextColumns = [...columns];nextColumns[index] = {...nextColumns[index],width: size.width};return { columns: nextColumns };});};
}export default ResizeableTable;

resizeable-table.less

:global { .react-resizable {position: relative;}.react-resizable-handle {position: absolute;width: 10px;height: 100%;bottom: 0;right: -5px;cursor: col-resize;z-index: 999;}}

第三步:使用Resizable组件

import ResizeableTable from "@app/utils/reactResizable/Resizeable"class AccelerateAll extends Component{...render(){const columns = [...]const tableData= [...]return(<div className="Accelerate-table"> <ResizeableTablescroll={{  y:500 }} //固定表格高度,使用滚动条columns={columns} //表头数据dataSource={tableData} //内容数据/></div>)}
}

用react-resizable插件来拖动改变ant-ui表格的列宽相关推荐

  1. React Ant Design UI 表格时间列格式化 代码片段

    //导入moment import component from 'moment'{title: '创建时间',dataIndex: 'updatedAt',sorter: true,render: ...

  2. js 实现上下拖动改变父 div 的高度,左右上下拖动动态分割孩子的宽高

    1. 需求 实现父 div 里面 左右,上下动态分割 div,并上下改变父 div 的高度,并且宽和高都是按百分比(如图) . 2. 实现原理 2.1 父布局 <div class='hj-wr ...

  3. ant design pro模板_ant design pro 当中改变ant design 组件的样式和 数据管理

    ant design pro 简介 官网简介 Ant Design Pro 是一个企业级中后台前端/设计解决方案,我们秉承 Ant Design 的设计价值观,致力于在设计规范和基础组件的基础上,继续 ...

  4. react 时刻表插件_React“啊哈”的时刻

    react 时刻表插件 As a teacher, one of my main goals is to maximize people's "aha" moments. 作为一名 ...

  5. [react] 在React中组件的props改变时更新组件的有哪些方法?

    [react] 在React中组件的props改变时更新组件的有哪些方法? 新版用 getDerivedstatefromProps(nextProps){ 业务逻辑} 个人简介 我是歌谣,欢迎和大家 ...

  6. android中拖动文字实现功能,Android:图片中叠加文字,支持拖动改变位置

    之所以做了这么一个Demo,是因为最近项目中有一个奇葩的需求:用户拍摄照片后,分享到微信的同时添加备注,想获取用户在微信的弹出框输入的内容,保存在自己的服务器上.而事实上,这个内容程序是无法获取的,因 ...

  7. php 页面拖动改变大小,鼠标拖动改变DIV等网页元素的大小的实现方法

    1.初次实现 1.1 html代码 div change width by drag div change width by drag 1.2 js代码 var eleLeft = $('#myDiv ...

  8. C# visionpro搜索区域拖动改变事件

    C# visionpro搜索区域拖动改变事件 CogRectangle rectangle = null;private void Form1_Load(object sender, EventArg ...

  9. 无边框对话框拖动改变大小的实现总结

    相同是项目遇到的问题,要求是无边框的对话框要实现鼠标的拖动改变大小.无边框对话框跟有边框的实现肯定不一样喽. 我上网搜到一种方法是: 须要处理下面这三个消息: WM_NCHITTEST  WM_SET ...

最新文章

  1. ubuntu笔记(二) ubuntu上安装 mysql
  2. codeforces 667A A. Pouring Rain(水题)
  3. 水题 ZOJ 3875 Lunch Time
  4. 一个简单的Makefile模板
  5. 计算机教育类会议论文,中国教育和科研网(CERNET)第七届学术会议征集论文通知...
  6. html大气网页模板,HTML蓝色大气形式扁平企业官网网页模板代码
  7. 移动端测试===adb shell top命令解释
  8. 【汇编语言与计算机系统结构笔记02】整数的计算机表示与运算,C中的无符号字符(unsigned)和带符号字符(signed),补码,一些例题
  9. 将某一列转换为字符类型_还在为数据清洗抓狂?这里有一个简单实用的清洗代码集...
  10. easypoi 大数据 百万_燃烧大数据 | 分析了2百万份成绩后发现,女跑者更稳?
  11. Lenovo System x 硬件Windows Server驱动下载
  12. git clone提示鉴权失败
  13. RESTful API学习笔记
  14. 十几岁就是很有名的黑客,阿里巴巴的守护神,每天挡下无数次黑客攻击,他的工资有多少?
  15. linux sata驱动加载硬盘顺序,linux安装前必备知识
  16. 磁链观测器结合霍尔传感器转子角度方案
  17. VC实现的简易防火墙
  18. Matlab: 获取数组中不重复的元素,可以使用unique(arr)函数即可
  19. em算法怎么对应原有分类_彻底搞懂EM算法
  20. 公司给期权了,要不要?

热门文章

  1. 分享一个最好用的剪切板管理软件
  2. 各种ADSL路由器端口映射设置
  3. packages.list和packages.xml
  4. Nutz | Nutz项目整合Spring实战
  5. java无法引用int_Java中的“int不能被解除引用”
  6. 跑马灯抽奖js php,文字跑马灯效果的完成
  7. 一张单词表!Java So Easy!
  8. 【信息学奥赛】1015:计算并联电阻的阻值(C++)
  9. tensorflow 2.10.0安装所需依赖库版本确定方法
  10. 红帽推容器开发工具包2.1版 容器开发更容易