Skip to content

React API

@iyotsuba/gantt-react 导出 YgGantt、全部 React 类型,并重新导出 Core 数据类型与算法。

Props

数据与视图

属性类型默认值说明
tasksGanttTask[]必填有序任务行
linksGanttLink[][]依赖关系
viewViewPresetId-受控维度
defaultViewViewPresetId'week'非受控初始维度
timelineRangeGanttTimelineRange数据范围外部日期范围
autoFocusboolean | AutoFocusOptionstrue初始或维度变化后的聚焦策略
zoomnumber1时间轴密度,内部限制为 0.4...3
selectedTaskIdstring-受控选中任务
readonlybooleanfalse禁用任务拖动与缩放

布局与虚拟化

属性类型默认值说明
titlestring'项目计划'图表无障碍名称与标题
heightnumber520组件固定高度
showToolbarbooleantrue显示组件工具栏
showTaskTablebooleantrue显示左侧任务表
sidebarWidthnumber320任务表宽度
minSidebarWidth / maxSidebarWidthnumber180 / 520分栏限制
sidebarResizeStepnumber8分栏吸附步长
resizableSidebarbooleantrue允许拖动分栏
taskTableColumnsGanttReactTaskColumn[]内置三列列显隐与宽度
rowHeight / barHeight / barMinWidthnumber46 / 26 / 18行与任务条几何
virtualizeRows / virtualizeColumnsbooleantrue行与时间列虚拟化
rowVirtualizationThresholdnumber120行虚拟化阈值
columnVirtualizationThresholdnumber180时间列虚拟化阈值
rowOverscan / columnOverscannumber4 / 3视口外预渲染窗口

显示、联动与动效

属性类型默认值说明
showDependenciesbooleantrue显示依赖线
showProgressbooleantrue显示进度层
showEdgeIndicatorsbooleantrue逐行显示左右视口外入口
gridStyle'line' | 'banded' | 'soft' | 'contrast''line'网格模板
taskPatternGanttPatternOptions | false-全局任务条纹理
entryEffect'fade' | 'fade-slide' | 'scale-fade' | 'none''fade-slide'新虚拟行入场
entryDurationnumber180入场毫秒数
groupIdstring-联动组
sync'none' | 'scroll' | 'view' | 'all''none'联动范围
className / styleReact 标准类型-根节点样式入口

Render Props

属性参数用途
renderTaskHeader()任务表表头
renderTask(task, rowIndex, selected)任务列
renderOwner(task, rowIndex)负责人列
renderProgress(task, progress)进度列
renderBarGanttReactBarRenderContext任务条内容
renderDependencyGanttReactDependencyRenderContext完整依赖线 SVG
renderEdgeIndicatorGanttReactEdgeRenderContext行级左右入口;调用 jump() 定位
renderEmpty()空数据状态

事件

属性载荷说明
onViewChangeViewPresetId维度变化
onTaskClickGanttReactTaskClick单击任务行或任务条,source 区分来源
onTaskDoubleClick(task, event)双击任务
onLinkDoubleClickGanttReactLinkDoubleClick双击依赖线
onTaskChangeGanttReactTaskChange移动或缩放后的不可变建议值
onVisibleRangeChangeGanttReactVisibleRange当前日期与行窗口,适合远程分页
onSidebarWidthChangenumber分栏宽度变化

实例方法

tsx
const gantt = useRef<YgGanttReactHandle>(null)

gantt.current?.focus({ strategy: 'dense', scope: 'viewport', windowDays: 14 })
gantt.current?.scrollToDate('2026-08-12')
gantt.current?.scrollTaskIntoView('design')
gantt.current?.scrollToRow(2400)
gantt.current?.fitToData()
gantt.current?.setView('month')
gantt.current?.selectTask('design')
gantt.current?.getAnchorDate()
gantt.current?.getRenderStats()

getRenderStats() 返回总任务数、实际渲染行/列/依赖线数量,以及行列虚拟化是否开启。

以 MIT License 开源