当前位置: 首页 > news >正文

【前端知识】React Flow : 一个基于 React 的可视化节点编辑器框架

React Flow : 一个基于 React 的可视化节点编辑器框架

  • 一、React Flow 是什么?(核心概念)
    • 1️⃣ 核心概念速览
    • 2️⃣ React Flow 不是什么
  • 二、React Flow 能实现哪些功能?
    • ✅ 1. 基础可视化能力(开箱即用)
    • ✅ 2. 高度可定制节点(非常关键)
    • ✅ 3. 状态驱动(工程化核心)
    • ✅ 4. 事件系统(构建“真正可用的工具”)
    • ✅ 5. 高级能力(企业级)
  • 三、React Flow 完整使用教程(工程级)
    • Step 1:环境准备
    • Step 2:安装依赖
    • Step 3:Tailwind 基础配置
    • Step 4:全局样式
    • Step 5:流程状态管理(Zustand)
    • Step 6:自定义节点
    • Step 7:注册节点类型
    • Step 8:主画布
    • Step 9:初始化流程数据
    • Step 10:构建 & 部署
  • 四、使用 React Flow 构建 AI 工作流工具(实战)
    • ✅ 一个典型的 AI 工作流结构
    • ✅ 节点设计(推荐)
    • ✅ 与 LangGraph / MCP 的关系
    • ✅ 执行联动示意
  • 五、总结(重点)

一、React Flow 是什么?(核心概念)

React Flow 是一个基于 React 的可视化节点编辑器框架,用于构建流程图、DAG、工作流、规则引擎 UI。

它不是“画图库”,而是:

可交互、可编排、可工程化嵌入的节点系统

1️⃣ 核心概念速览

概念说明
Node流程中的节点(一个步骤 / 一个 Agent / 一个算子)
Edge节点之间的连线(数据流向 / 控制流向)
Handle节点上的“连接点”(输入 / 输出)
PortHandle 的高级称呼
Flow InstanceReactFlow 组件实例
Node Types可注册的自定义节点类型
Edge Types可自定义的连线类型

2️⃣ React Flow 不是什么

❌ 不是 Figma / X6 / SVG 画图工具
❌ 不自带“执行引擎”
只负责“可视化 + 交互”

真正的“工作流执行”需要你自己实现(或对接 LangGraph / 后端 DAG)

二、React Flow 能实现哪些功能?

✅ 1. 基础可视化能力(开箱即用)

  • 节点拖拽
  • 画布缩放 / 平移
  • 节点多选 / 框选
  • 连线吸附
  • 对齐辅助线
  • 键盘快捷键(删除 / 复制 / 粘贴)

👉 这是构建“工作流工具”的基础设施

✅ 2. 高度可定制节点(非常关键)

你可以把任何 React 组件作为节点:

const CustomNode = ({ data }) => ( <div className="agent-node"> <h4>{data.label}</h4> <button onClick={data.onRun}>执行</button> </div> );

✅ 意味着你可以放:

  • 表单
  • 状态灯
  • 下拉框
  • 日志面板
  • AI Agent 状态

✅ 3. 状态驱动(工程化核心)

React Flow 的状态是纯 JSON

{nodes:[{id,type,position,data}],edges:[{id,source,target}]}

✅ 可以被:

  • 保存到数据库
  • 从后端加载
  • 与 Zustand / Redux 联动
  • 与 LangGraph 状态对齐

✅ 4. 事件系统(构建“真正可用的工具”)

事件用途
onNodesChange节点移动 / 删除
onEdgesChange连线变化
onConnect新建连线
onNodeClick打开配置面板
onPaneClick空白处点击

✅ 5. 高级能力(企业级)

  • ✅ 子流程(Node 内嵌 Flow)
  • ✅ 自动布局(dagre / elk)
  • ✅ 撤销 / 重做
  • ✅ 自定义 Edge(带箭头、动画)
  • ✅ 大数据量(虚拟化)

三、React Flow 完整使用教程(工程级)

下面给你一个可直接上线使用的完整流程

Step 1:环境准备

node-v# >= 18npmcreate vite@latest my-flow-app ----templatereact-tscdmy-flow-app

Step 2:安装依赖

npminstallreactflow zustandnpminstall-Dtailwindcss postcss autoprefixer npx tailwindcss init-p

Step 3:Tailwind 基础配置

tailwind.config.js

exportdefault{content:['./index.html','./src/**/*.{ts,tsx}'],};

Step 4:全局样式

src/index.css

@tailwindbase;@tailwindcomponents;@tailwindutilities;

Step 5:流程状态管理(Zustand)

src/store/flowStore.ts

import{create}from'zustand';import{Node,Edge}from'reactflow';typeFlowState={nodes:Node[];edges:Edge[];setNodes:(nodes:Node[])=>void;setEdges:(edges:Edge[])=>void;};exportconstuseFlowStore=create<FlowState>((set)=>({nodes:[],edges:[],setNodes:(nodes)=>set({nodes}),setEdges:(edges)=>set({edges}),}));

Step 6:自定义节点

src/nodes/AgentNode.tsx

import { Handle, Position } from 'reactflow'; export function AgentNode({ data }: any) { return ( <div className="bg-white border p-3 rounded shadow min-w-[180px]"> <Handle type="target" position={Position.Top} /> <h4 className="font-bold">{data.label}</h4> <div className="text-xs text-gray-500 mb-2">{data.model}</div> <button className="bg-blue-500 text-white px-2 py-1 rounded" onClick={data.onRun} > 执行 </button> <Handle type="source" position={Position.Bottom} /> </div> ); }

Step 7:注册节点类型

constnodeTypes={agent:AgentNode,};

Step 8:主画布

src/pages/FlowEditor.tsx

import ReactFlow, { Controls, Background } from 'reactflow'; import 'reactflow/dist/style.css'; import { useFlowStore } from '../store/flowStore'; import { nodeTypes } from '../nodes'; export default function FlowEditor() { const { nodes, edges, setNodes, setEdges } = useFlowStore(); return ( <div className="h-screen w-full"> <ReactFlow nodes={nodes} edges={edges} nodeTypes={nodeTypes} onNodesChange={(changes) => setNodes( changes.reduce((acc, c) => { if (c.type === 'position') { return acc.map((n) => n.id === c.id ? { ...n, position: c.position! } : n ); } return acc; }, nodes) ) } onEdgesChange={(changes) => setEdges( changes.reduce((acc, c) => { if (c.type === 'remove') { return acc.filter((e) => e.id !== c.id); } return acc; }, edges) ) } fitView > <Controls /> <Background /> </ReactFlow> </div> ); }

Step 9:初始化流程数据

useFlowStore.setState({nodes:[{id:'1',type:'agent',position:{x:100,y:100},data:{label:'LLM Agent',model:'GPT-4o',onRun:()=>{}},},],edges:[],});

Step 10:构建 & 部署

npmrun build

✅ 可部署到:

  • Vercel
  • Netlify
  • Docker + Nginx

四、使用 React Flow 构建 AI 工作流工具(实战)

✅ 一个典型的 AI 工作流结构

用户输入 ↓ 意图识别 Agent ↓ 工具选择 ↓ 工具执行 ↓ 结果聚合

✅ 节点设计(推荐)

节点类型含义
InputNode用户输入
AgentNodeLLM / Agent
ToolNode工具调用
ConditionNode条件分支
OutputNode输出

✅ 与 LangGraph / MCP 的关系

技术
执行引擎LangGraph
可视化React Flow
协议MCP
状态同步JSON + WebSocket

✅ React Flow 负责:

  • 节点编排 UI
  • 状态展示
  • 用户交互

✅ LangGraph 负责:

  • 真正执行流程
  • 状态推进

✅ 执行联动示意

onClickRunAgent(nodeId){constflow=useFlowStore.getState();fetch('/api/langgraph/run',{method:'POST',body:JSON.stringify(flow),});}

五、总结(重点)

React Flow 的核心价值

把“流程编排”变成可交互、可维护、可工程化的前端系统

什么时候该用 React Flow?

  • AI 工作流编辑器
  • Agent 编排 UI
  • 规则引擎
  • 低代码平台

什么时候不该用?

  • 纯展示流程图
  • 非交互型图表
http://www.cnnetsun.cn/news/1566176.html

相关文章:

  • BepInEx Linux环境完全指南:从环境搭建到故障修复
  • BiliTools:一站式B站资源高效管理与获取解决方案
  • 保姆级教程:用ESP-IDF Monitor和Heap Tracing给LVGL任务栈“拍个X光”
  • 5个高效内存检测技巧:Memtest86+专业使用指南
  • 视频转PPT神器:3分钟学会智能幻灯片提取技巧
  • 从零到亿:BillionMail容器化邮件营销平台实战指南
  • 从抗菌肽到细胞穿透肽:手把手教你玩转专业多肽数据库(2023最新版)
  • 工欲善其事,必先利其器
  • Apple Silicon Mac上的iOS应用跨平台运行方案:PlayCover技术解析与实践指南
  • 最新VRay7.1 for 3dmax2021-2026下载及详细安装教程,附中文汉化VRay7.1渲染器安装包
  • 为什么你的SM9 Python代码通不过商用密码检测?——基于GM/T 0028-2014的12项合规性自查清单(附自测脚本)
  • Faster R-CNN实战部署:从目标检测到量化优化的全流程解密
  • 【实战】NoteExpress高效文献管理与引用技巧
  • Graylog3日志报警全流程配置:从邮件告警到SpringBoot日志集成
  • AI 开发实战:告警太多怎么办,用 AI 先做一轮降噪
  • 3步告别资源焦虑:猫抓插件让你的网络收藏永不丢失
  • 预测编码与反向传播关系研究:核心文献深度分析报告
  • 基于django的医疗后勤服务平台的护工vue
  • PathOfBuilding终极指南:掌握流放之路最强角色构建工具
  • FireRed-OCR StudioGPU适配方案:多卡并行解析长文档的配置详解
  • 【随机过程】实战解析:从基本概念到典型习题精解
  • 猫抓浏览器插件完全指南:轻松下载网页视频音频资源
  • APNS/2源码解析:深入理解HTTP/2推送实现原理
  • m3u8live.cn—— 免费无广告的 M3U8 在线播放器,粘贴即播
  • 保姆级教程:用C++刷穿GPLT天梯赛L1基础题(附避坑指南)
  • 从零到上线:手把手教你用FastAPI + LangGraph打造一个带WebSocket流式输出和会话记忆的AI客服接口
  • 腾讯云:2026年最全企业级安全养虾教程|附25页PDF文件下载
  • Java并发编程核心:线程安全、synchronized与volatile的深度剖析
  • C语言指针魔法:三步拆解单链表逆转核心逻辑
  • Windows 11 LTSC快速安装微软商店:一键解决应用生态缺失问题