<MiniMap />
<MiniMap /> 组件可用于渲染流程的概览。它将每个节点渲染为 SVG 元素,并可视化当前视窗相对于流程其余部分的位置。
import { ReactFlow, MiniMap } from '@xyflow/react';
export default function Flow() {
return (
<ReactFlow nodes={[...]]} edges={[...]]}>
<MiniMap nodeStrokeWidth={3} />
</ReactFlow>
);
}属性
对于 TypeScript 用户,<MiniMap /> 组件的属性类型导出为 MiniMapProps。
| 名称 | 类型 | 默认值 |
|---|---|---|
# nodeColor? | 字符串 | (节点: Node<T>) => 字符串 | |
# nodeStrokeColor? | 字符串 | (节点: Node<T>) => 字符串 | |
# nodeClassName? | 字符串 | (节点: Node<T>) => 字符串 | |
# nodeBorderRadius? | 数字 | |
# nodeStrokeWidth? | 数字 | |
# nodeComponent? | React.ComponentType<MiniMapNodeProps>一个自定义组件,用于在小地图中渲染节点。此组件必须渲染 SVG 元素! | |
# maskColor? | 字符串覆盖小地图中当前未在视窗中可见部分的蒙版的颜色。 | |
# maskStrokeColor? | 字符串 | |
# maskStrokeWidth? | 数字 | |
# position? | PanelPosition | |
# onClick? | (事件: React.MouseEvent,位置: XYPosition) => void | |
# onNodeClick? | (事件: React.MouseEvent,节点: Node<T>) => void | |
# pannable? | 布尔值确定是否可以通过在小地图中拖动来平移视窗。 | |
# zoomable? | 布尔值确定是否可以通过在小地图中滚动来缩放视窗。 | |
# ariaLabel? | 字符串 | null小地图中没有供屏幕阅读器用作可访问名称的文本,因此我们必须提供一个以使小地图可访问。默认值已足够,但您可能希望将其替换为与您的应用程序或产品更相关的名称。 | |
# inversePan? | 布尔值 | |
# zoomStep? | 数字 | |
# offsetScale? | 数字 | |
示例
使小地图可交互
默认情况下,小地图不可交互。要允许用户通过平移或缩放小地图与视窗交互,可以将 zoomable 或 pannable(或两者!)道具设置为 true。
import { ReactFlow, MiniMap } from '@xyflow/react';
export default function Flow() {
return (
<ReactFlow nodes={[...]]} edges={[...]]}>
<MiniMap pannable zoomable />
</ReactFlow>
);
}实现自定义小地图节点
可以将自定义组件传递给 nodeComponent 道具,以更改在小地图中渲染节点的方式。如果这样做,为了使其正常工作,必须在组件中仅使用 SVG 元素。
import { ReactFlow, MiniMap } from '@xyflow/react';
export default function Flow() {
return (
<ReactFlow nodes={[...]]} edges={[...]]}>
<MiniMap nodeComponent={MiniMapNode} />
</ReactFlow>
);
}
function MiniMapNode({ x, y }) {
return <circle cx={x} cy={y} r="50" />;
}查看 MiniMapNodeProps 文档,了解传递给自定义组件的道具。
自定义小地图节点颜色
nodeColor、nodeStrokeColor 和 nodeClassName 道具可以是接收一个 Node 并计算道具值的函数。这可用于自定义每个小地图节点的外观。
此示例展示了如何根据节点的类型为每个小地图节点着色
import { ReactFlow, MiniMap } from '@xyflow/react';
export default function Flow() {
return (
<ReactFlow nodes={[...]]} edges={[...]]}>
<MiniMap nodeColor={nodeColor} />
</ReactFlow>
);
}
function nodeColor(node) {
switch (node.type) {
case 'input':
return '#6ede87';
case 'output':
return '#6865A5';
default:
return '#ff0072';
}
}Typescript
此组件接受自定义节点类型的泛型类型参数。有关更多信息,请参见我们的 Typescript 指南中的 本节。
<MiniMap<CustomNodeType> nodeColor={nodeColor} />