react 甘特图之旅

  1. react-gantt

    GitHub 仓库: https://github.com/clayrisser/react-gantt

  2. react-gantt-chart

    GitHub 仓库: https://github.com/MaTeMaTuK/gantt-task-react

  3. easy-gant-beta

    GitHub 仓库: https://github.com/web-widgets/react-gantt-demos

上面的版本不兼容

  1. dhtmlx-gantt
    官方网站: https://docs.dhtmlx.com/gantt/
    GitHub 仓库: https://github.com/dhtmlx/dhtmlx-gantt

试用版

npm install @dhx/trial-gantt 安装不了

npm install dhtmlx-gantt 标准版(免费)

可以参考:https://dhtmlx.com/blog/create-react-gantt-chart-component-dhtmlxgantt/

安装

javascript 复制代码
 npm install @bryntum/gantt-trial    

5、 syncfusion/ej2-react-gantt 收费, 30天免费试用
syncfusion/ej2-react-gantt

javascript 复制代码
npm install @syncfusion/ej2-react-gantt
npm list @syncfusion/ej2-buttons @syncfusion/ej2-base

6、kendo-react-ui 收费
kendo-react-ui

javascript 复制代码
npm install @progress/kendo-react-gantt 
 
npm install @progress/kendo-react-common
npm install @progress/kendo-react-grid 

综上,我推荐dhtmlx-gantt 免费版,

javascript 复制代码
import React, { useEffect, useRef } from 'react';
import { gantt } from 'dhtmlx-gantt';
import 'dhtmlx-gantt/codebase/dhtmlxgantt.css';
 


const Dhtmlx = () => {
  const container = useRef<HTMLDivElement>(null);

  const data = {
    data: [
      { id: 1, text: "Project #1", start_date: null, duration: null, parent: 0, progress: 0, open: true },
      { id: 2, text: "Task #1", start_date: "2024-08-01 00:00", duration: 1, parent: 1, progress: 1 },
      { id: 3, text: "Task #2", start_date: "2024-08-06 00:00", duration: 2, parent: 1, progress: 0.5 },
      { id: 4, text: "Task #3", start_date: null, duration: null, parent: 1, progress: 0.8, open: true },
      { id: 5, text: "Task #3.1", start_date: "2024-08-09 00:00", duration: 2, parent: 4, progress: 0.2 },
      { id: 6, text: "Task #3.2", start_date: "2024-08-11 00:00", duration: 1, parent: 4, progress: 0 }
    ],
    links: [
      { id: 1, source: 2, target: 3, type: "0" },
      { id: 2, source: 3, target: 4, type: "0" },
      { id: 3, source: 5, target: 6, type: "0" }
    ]

  };

  useEffect(() => {
    if (container.current) {
      gantt.config.date_format = "%Y-%m-%d %H:%i";
      gantt.init(container.current);
      gantt.parse(data);
    }

    return () => {
      gantt.clearAll();
    };
  }, []);
  return (
    <div>
      <div ref={container} style={{ width: '100%', height: '500px' }}></div>
    </div>
  )

}

export default Dhtmlx 
 
相关推荐
子兮曰3 小时前
async/await高级模式:async迭代器、错误边界与并发控制
前端·javascript·github
恋猫de小郭4 小时前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
GIS之路6 小时前
ArcGIS Pro 中的 Notebooks 入门
前端
IT_陈寒7 小时前
React状态管理终极对决:Redux vs Context API谁更胜一筹?
前端·人工智能·后端
gxp1238 小时前
初学React:请求数据参数未更新 && 数据异步状态更新问题
react.js
Kagol8 小时前
TinyVue 支持 Skills 啦!现在你可以让 AI 使用 TinyVue 组件搭建项目
前端·agent·ai编程
柳杉8 小时前
从零打造 AI 全球趋势监测大屏
前端·javascript·aigc
simple_lau8 小时前
Cursor配置MasterGo MCP:一键读取设计稿生成高还原度前端代码
前端·javascript·vue.js
睡不着先生8 小时前
如何设计一个真正可扩展的表单生成器?
前端·javascript·vue.js
天蓝色的鱼鱼8 小时前
模块化与组件化:90%的前端开发者都没搞懂的本质区别
前端·架构·代码规范