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. [BZOJ4033][HAOI2015]树上染色
  2. Hadoop详解(一):Hadoop简介
  3. matlab 常用数学函数
  4. 2019ICPC(银川) - Delivery Route(强连通缩点+分块最短路)
  5. C#委托之就是跟委托过不去…
  6. python中文编程教学_中谷python中文视频教程(全38集)
  7. iOS开发拓展篇—音频处理(音乐播放器3)
  8. 支付宝 “集五福”今日开启;小米起诉美国国防部;Chrome 再次屏蔽七个端口 | 极客头条...
  9. 开课吧:Webpack的构建流程是什么?
  10. 电脑tf卡检测不到_电脑不认TF卡,有什么方法
  11. Java爬虫入门详解(Selenium)
  12. 赤兔AVI视频恢复软件找回永久删除的avi视频
  13. ALSA学习(2)——pcm设备逻辑
  14. 如果局域网当中两台电脑互相ping不通
  15. 互联网产品经理核心素质能力模型
  16. 微服务:注册中心ZooKeeper、Eureka、Consul 、Nacos对比
  17. java中jar文件
  18. JDBC——“CRUD”
  19. 计算机硬盘sata,sata硬盘是什么
  20. 青少年等级考试【Python通关干货】(二级)

热门文章

  1. “睡后收入”200万的清洁工彻底火了:你和马云的差距,不仅仅是钱!
  2. Mapv 偏移后的图标导致点击错位的解决方法
  3. java 图片加白压缩_java图片添加水印和压缩
  4. 一个谷歌浏览器主页插件的诞生
  5. Maxcompute Spark作业管控利器—Cupid Console
  6. matlab设置坐标轴/字体/颜色
  7. discuz模板之新版应用中心接入的方法【无需升级代码】
  8. 专业背景和ACP认证哪个更重要?
  9. Neve 1073 话放 变压器
  10. iOS系统中应用程序间通信的方法及装置