React+Typescript实现一个甘特图表格

好久没更新博客了,最近工作写了一个有趣的东西,想和大家分享一下

照例先放效果图

准备项目,直接放出依赖项目

{"name": "react-gantt-table","version": "0.1.0","private": true,"dependencies": {"@testing-library/jest-dom": "^5.14.1","@testing-library/react": "^12.0.0","@testing-library/user-event": "^13.2.1","@types/jest": "^27.0.1","@types/node": "^16.7.13","@types/react": "^17.0.20","@types/react-dom": "^17.0.9","axios": "^0.24.0","mockjs": "^1.1.0","react": "^17.0.2","react-dom": "^17.0.2","react-scripts": "5.0.0","react-tooltip": "^4.2.21","react-window": "^1.8.6","typescript": "^4.4.2","web-vitals": "^2.1.0"},"scripts": {"start": "react-scripts start","build": "react-scripts build","test": "react-scripts test","eject": "react-scripts eject"},"eslintConfig": {"extends": ["react-app","react-app/jest"],"rules": {"no-undef": "off","no-restricted-globals": "off","no-unused-vars": "off"}},"browserslist": {"production": [">0.2%","not dead","not op_mini all"],"development": ["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"devDependencies": {"@types/mockjs": "^1.0.5","@types/react-window": "^1.8.5"}
}

具体代码后面我会放出gitee地址,就直接说实现思路吧

  1. 为了实现首列固定和头部固定,我是才用三个部分渲染的思路,就是用一个大的盒子装起来全部、然后第一列绝对定位、头部绝对定位,中间的能滚动的再用一个盒子装起来实现横向滚动和竖向滚动
  2. 为了实现tooltips使用react-tooltips这个库(看上面的依赖项目),为了能让这个tooltips框框跟随鼠标,使用mouseMove事件记录坐标点,然后动态修改它的位置
  3. 为了让页面顺畅,使用react-window这个虚拟滚动库,然后通过这个库自带的滚动方法onScroll和scrollTo方法实现左侧第一列和中间的表关联滚动,然后使用ref实现表头和中间表横向关联滚动
  4. 这个树形结构是可以点击打开的,它们其实都是同一个行,或者说同一层级的,只是通过CSS让子节点缩紧了看起来像子节点,然后每次点击父节点的时候判断点的是哪个节点,然后动态从当前点击的节点动态追加条目到数组,反之截取。让react帮我处理视图,我们只关注数据
  5. 为了模拟大量数据,我使用mockjs这个库➕axios模拟了1000条数据,我感觉应该渲染十万条不是问题

项目地址gitee地址

不是很完善,而且写死了两级树节点,还有样式什么的我也没空封住起来,有用到的朋友们自己去修改源码吧,至于无限级的树或许可以用递归实现。有问题可以提issue,或许能帮到你吧。如果可以希望可以给我点个start哈哈

React+Typescript实现一个甘特图表格相关推荐

  1. 私域流量企业团队运营工作规划方案甘特图表格

    私域流量企业团队运营工作规划方案甘特图表格 网盘文档下载地址https://pan.baidu.com/s/1WJ5XnWCfarPYe8xagY88Cw?pwd=w56h 主要分享其中的三个思维模型 ...

  2. 可视化项目管理只需一个甘特图

    什么是数据可视化?数据可视化是一个以图像或者图形来展示数据的方法,它有助于人们可视化处理那些困难的概念,以及确认那些仍未被发掘的模式. 可视化能将数据以更加直观的方式展现出来项目的情况,使数据更加客观 ...

  3. 一起来了解React的四种优秀甘特图方案(下篇)

    接上篇!!! 3. DHTMLX Gantt(https://dhtmlx.com/docs/products/dhtmlxGantt/) 作为一款功能齐全的甘特图工具,DHTMLX Gantt能够实 ...

  4. 怎么画好一个项目甘特图(内附实用模板)

    作者|鲁佳 出品|阿里巴巴新零售淘系技术部 导读:甘特图是一个非常实用的项目管理工具.在阿里的日常项目工作中,不管是 PD 还是开发同学,大家普遍都会遇到需要规划项目工作安排的情况,这个时候画一个甘特 ...

  5. Excel学习笔记:P30-如何制作一个让老板眼睛为之一亮的甘特图

    文章目录 一.甘特图 1.1 设置表格格式 1.2 创建甘特图 1.3 添加任务进度 1.4 添加百分比标识 一.甘特图 1.1 设置表格格式 甘特图就是一个时程表,它的横轴代表了时间,纵轴则是我们手 ...

  6. 一个简单漂亮好用的甘特图软件

    一个简单漂亮好用的甘特图软件 知竹 - 一个甘特图项目计划管理协作平台 项目demo 一.添加任务 点击任务标题变成可编辑格式 按回车键即在当前任务下添加一个任务 二.设置为子任务 选中一行任务 (按 ...

  7. 列的数目比列的名字要多_你们要的甘特图来啦!还有具体做法哦!

    作为项目的负责人,"时间管理"也是极为重要的一环.甘特图作为常用的项目管理工具之一,有助于把一个大型项目划分为几个小部分,并有条理地展示.甘特图(Gantt chart)又称为横道 ...

  8. html 甘特图_工具项目管理工具详解——甘特图

    作为项目的负责人,"时间管理"也是极为重要的一环.甘特图作为常用的项目管理工具之一,有助于把一个大型项目划分为几个小部分,并有条理地展示. 甘特图(Gantt chart)又称为横 ...

  9. 项目管理excel_项目管理甘特图是什么?怎么做才能更高效?(EXCEL制作甘特图详细步骤)...

    项目管理甘特图是什么?甘特图即Gantt chart,又被称之为横道图.条状图.其命名是由提出者亨利·L·甘特(Henrry L.Ganntt)先生的名字而来的.甘特图是以图示的方式,并通过活动列表和 ...

最新文章

  1. js webpack 配置路径_webpack中如何设置html引入js的路径
  2. Ubuntu系统下桌面卡死,但是鼠标键盘可以动
  3. 新手学C语言会踩到什么样的坑?
  4. html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?...
  5. Mybatis中Mapper动态代理方式
  6. 2016年04月28日-统一沟通之OCS 2007 R2-公开课-通知
  7. 基于BERT的ASR纠错
  8. 第一次点击button, view视图出现;第二次点击button,view视图消失
  9. 手把手0基础项目实战(三)——教你开发一套电商平台的安全框架
  10. qt实现类似windows的屏幕保护(小球碰撞动画)
  11. 多线程_并发_同步_快乐影院
  12. ignite mysql 持久化_2 ignite关键特性
  13. 2013年新交规科目二考试实录(北京京东驾校)
  14. greenplum如何删除segment节点
  15. 视频处理及MAX7456的图文解释
  16. forEach和$.each()以及$().each()的用法
  17. Keycloak授权服务指南
  18. 【Unity3D】人机交互Input
  19. django源码阅读 manage.py文件
  20. [教程]Ubuntu20.04安装Node.js

热门文章

  1. 计算机用户年龄段,用户性别、年龄分布
  2. Apap图像配准算法
  3. 浅谈生成函数+卷积+FFT
  4. 华中师范大学计算机学院夏令营有感
  5. Unity3d 官方角色换装Demo源代码学习
  6. 多用户商城系统的运营模式有哪些?
  7. 解决Mac有个软件图标一直卡在屏幕最上方
  8. java雷达数据解析_radar: 基于python pycinrad 以及多种类库 编写基于java 的雷达基数据统一格式读取...
  9. Ubuntu20.04安装英伟达驱动步骤
  10. cpu针脚测试软件,CPU针脚歪竟然也能开机?_机箱电源评测-中关村在线