React项目实战:用@xyflow/react快速搭建可拖拽流程图(附完整代码)
在当今前端开发领域,可视化交互工具的需求日益增长。无论是构建低代码平台、设计自动化工作流,还是开发数据管道配置界面,流程图功能都成为现代Web应用的核心组件之一。本文将带你从零开始,使用@xyflow/react这个专为React设计的流程图库,快速实现一个功能完备的可拖拽流程图应用。
1. 环境准备与基础搭建
1.1 初始化React项目
首先确保你的开发环境已配置Node.js(建议版本18+)和npm/yarn/pnpm。我们使用Vite作为构建工具,它能提供更快的开发体验:
npm create vite@latest flow-demo --template react-ts
cd flow-demo
npm install @xyflow/react
1.2 基础配置要点
在项目入口文件(通常是main.tsx)中导入必要的样式文件:
import '@xyflow/react/dist/style.css'
这个CSS文件包含了所有必要的交互样式,如果遗漏会导致拖拽、连线等功能异常。
1.3 最小化流程图实现
创建一个基础组件FlowCanvas.tsx,实现最简单的两个节点连接:
import { ReactFlow, useNodesState, useEdgesState, addEdge } from '@xyflow/react'
const initialNodes = [
{
id: 'start',
position: { x: 100, y: 100 },
data: { label: '开始' },
style: { backgroundColor: '#f0f9ff', borderColor: '#bae6fd' }
},
{
id: 'end',
position: { x: 400, y: 100 },
data: { label: '结束' },
style: { backgroundColor: '#f0fdf4', borderColor: '#bbf7d0' }
}
]
const initialEdges = [{ id: 'e1', source: 'start', target: 'end' }]
export default function FlowCanvas() {
const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes)
const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges)
const onConnect = (params) => setEdges((eds) => addEdge(params, eds))
return (
<div style={
{ width: '100%', height: '500px' }}>
<ReactFlow
nodes={nodes}
edges={edges}
onNodesChange={onNodesChange}
onEdgesChange={onEdgesChange}
onConnect={onConnect}
fitView
/>
</div>
)
}
2. 核心功能深度解析
2.1 节点与边的数据结构
@xyflow/react的核心概念围绕节点(Node)和边(Edge)展开:
-
节点基础属性:
id: 唯一标识符(必填)position: { x, y }坐标(必填)data: 自定义数据对象(必填,至少包含label)type: 节点类型(可选,用于自定义节点)
-
边基础属性:

&spm=1001.2101.3001.5002&articleId=155337923&d=1&t=3&u=b9f42dcaccef40f99dad2fcd6640da07)
1379

被折叠的 条评论
为什么被折叠?



