跳到主要内容

子流程

备注

弃用parentNode 属性!在版本 11.11.0 中,我们已将parentNode 选项重命名为parentId。旧属性仍然受支持,但将在版本 12 中删除。

子流是节点内的流。它可以是单独的流,也可以是与其父级之外的其他节点连接的流。此功能还可用于对节点进行分组。在文档的这一部分中,我们将构建一个包含子流的流,并向您展示子节点的特定选项。

注意

节点顺序 在nodes/defaultNodes 数组中,父节点出现在其子节点之前是很重要的,这样才能正确处理。

添加子节点

如果要将一个节点添加为另一个节点的子节点,则需要使用parentId(在以前的版本中称为parentNode)选项(您可以在节点选项部分找到所有选项的列表)。一旦我们这样做了,子节点就会相对于其父节点定位。 { x: 0, y: 0 } 的位置是父级的左上角。

在此示例中,我们通过传递 style 选项来设置父节点的固定宽度和高度。此外,我们将子范围设置为“父”,这样我们就无法将子节点移出父节点。

参考预览:https://codesandbox.io/p/sandbox/fervent-forest-mrvp55?file=%2Fnodes.js&utm_medium=sandpack

使用子级特定选项

当您移动父节点时,您可以看到子节点也移动。使用parentId选项将一个节点添加到另一个节点只做一件事:相对于其父节点定位它。子节点并不是真正的子标记。您可以将子级拖动或定位到其父级之外(当未设置范围:'parent'选项时),但是当您移动父级时,子级也会随之移动。

在上面的示例中,我们使用组类型作为父节点,但您也可以使用任何其他类型。组类型只是一种没有附加句柄的便利节点类型。

现在我们要添加更多的节点和边。正如您所看到的,我们可以连接组内的节点并创建从子流到外部节点的连接:

参考预览:https://codesandbox.io/p/sandbox/cocky-moon-9mc577?file=%2Fnodes.js&utm_medium=sandpack

使用默认节点类型作为父节点

让我们删除节点 B 的标签并添加一些子节点。在此示例中,您可以看到您也可以使用默认节点类型之一作为父节点。我们还将子节点设置为draggable: false,以便它们不再可拖动。

参考预览:https://codesandbox.io/p/sandbox/hopeful-dust-wv95xd?file=%2Fnodes.js&utm_medium=sandpack