Skip to content

多图联动

同步协议传递视口中心日期,而不是复制像素滚动值,因此不同宽度和不同数据范围的图表仍能对齐同一时间。sync 支持 nonescrollviewall

模式同步时间锚点同步时间维度适用场景
none多个图表完全独立
scroll对照不同粒度但保持同一日期
view统一维度,各自浏览不同日期
all主从视图或上下分区实时联动

只有相同联动组中的实例会互相广播。同步消息携带来源标识,接收端更新时不会再次回环发送。

Vue

vue
<YgGantt group-id="release-plan" sync="all" :tasks="productTasks" />
<YgGantt group-id="release-plan" sync="all" :tasks="launchTasks" />

sync 改为 none 后,每个实例保留自己的视图、范围和滚动位置:

vue
<YgGantt group-id="release-plan" sync="none" :tasks="productTasks" />

React

tsx
<YgGantt groupId="release-plan" sync="all" tasks={productTasks} />
<YgGantt groupId="release-plan" sync="all" tasks={launchTasks} />

React 在原生滚动事件中发布日期锚点,接收端直接更新滚动位置,不等待下一次 React 渲染。

Flutter

Flutter 通过共享 YgGanttLinkGroup 联动:

dart
final group = YgGanttLinkGroup();

YotsubaGantt(
  tasks: productTasks,
  linkGroup: group,
  syncMode: YgSyncMode.all,
)

YotsubaGantt(
  tasks: launchTasks,
  linkGroup: group,
  syncMode: YgSyncMode.all,
)

不传联动组时,Flutter 实例同样完全独立。共享组释放前应随页面生命周期销毁,避免宿主持有已经卸载的控制器。

MIT License · Vue / React / Flutter