当前位置: 首页 > news >正文

使用 TypeScript + dhtmlx-gantt 在 Next.js 中实现

1. 安装依赖(确保已安装)

npm install dhtmlx-gantt

2. 创建 pages/gantt.tsx

'use client'import { useRef, useEffect } from 'react'
import { gantt } from 'dhtmlx-gantt'
import 'dhtmlx-gantt/codebase/dhtmlxgantt.css'interface Task {id: number | stringtext?: stringstart_date: string | Dateduration: numberprogress: numberowner?: stringpriority?: stringparent?: number | string
}export function ProjectGantt() {const ganttContainerRef = useRef<HTMLDivElement | null>(null)useEffect(() => {if (gantt && ganttContainerRef.current) {// 配置(可选)gantt.config.readonly = false// 初始化容器gantt.init(ganttContainerRef.current)// 定义数据const tasks: Task[] = [{id: 1,text: '项目启动',start_date: '2025-05-20',duration: 3,progress: 0.4,},{id: 2,text: '需求调研',start_date: '2025-05-23',duration: 5,progress: 0.2,parent: 1,},{id: 3,text: 'UI设计',start_date: '2025-05-25',duration: 4,progress: 0.1,parent: 1,},]// 载入数据gantt.parse({ data: tasks })}// 清理return () => {if (gantt) {gantt.clearAll()}}}, [])return (<div style={{ padding: '20px' }}><h2>Gantt 任务视图(TypeScript版)</h2><div id="gantt_here" ref={ganttContainerRef} style={{ width: '100%', height: '600px' }}></div></div>)
}

效果图如下
在这里插入图片描述

小结

  • 用 import { gantt } from ‘dhtmlx-gantt’
  • 定义一个 Task TypeScript 接口
  • 让 ref 指向容器元素
  • 在 useEffect 中初始化、载入数据、处理清理

相关文章:

  • 鸿蒙OSUniApp 制作自定义弹窗与模态框组件#三方框架 #Uniapp
  • 使用itextsharp5.0版本来合并多个pdf文件并保留书签目录结构
  • 从AlphaGo到ChatGPT:AI技术如何一步步改变世界?
  • 使用 Apache POI 生成 Word 文档
  • 第 83 场周赛:较大分组的位置、隐藏个人信息、连续整数求和、统计子串中的唯一字符
  • WordPress_Relevanssi Sql注入漏洞复现(CVE-2025-4396)
  • 2025最新ChatGPT Plus令牌(Token)限制完全指南:每日/每月用量详解与突破方法
  • 国产化Word处理控件Spire.Doc教程:通过C# 删除 Word 文档中的超链接
  • 网络安全-等级保护(等保) 2-5 GB/T 25070—2019《信息安全技术 网络安全等级保护安全设计技术要求》-2019-05-10发布【现行】
  • 2023CCPC河南省赛暨河南邀请赛个人补题ABEFGHK
  • Spark SQL 之 Analyzer
  • 基于vue3的权限管理系统脚手架搭建项目实战(二):登录与路由权限控制
  • 一个基于 Spring Boot 的实现,用于代理百度 AI 的 OCR 接口
  • React与Docker中的MySQL进行交互
  • DeepSeek执行流程加速指南:跨框架转换与编译优化的核心策略全解析
  • Python60日基础学习打卡D26
  • 记一次bug排查(.exe链接mysql失败)-每天学习一点点
  • 【知识聚合】Java相关技术网址聚合
  • Java详解LeetCode 热题 100(17):LeetCode 41. 缺失的第一个正数(First Missing Positive)详解
  • 【kafka】基本命令
  • 江西3人拟提名为县(市、区)长候选人
  • 因港而兴,“长江黄金水道”上的宜宾故事
  • 苏轼“胡为适南海”?
  • 长三角首次,在铁三赛事中感受竞技与生态的共鸣
  • 中央宣传部、全国妇联联合发布2025年“最美家庭”
  • 腾讯一季度营收增长13%,马化腾:战略性的AI投入将带来长期回报