Token导航 LogoToken导航TokenDH.com
前端设计需要联网github未标认证来源可访问clear审计通过

react-flow-usageReact flow 使用

Agent Skill

用于辅助前端页面、组件、样式和交互逻辑的开发与维护。它适合让 Agent 生成或审查 React、Next.js、Vue、Tailwind、CSS 等相关代码,整理组件结构,或定位布局和性能问题。使用时需要结合项目现有设计系统、路由和构建方式,避免只生成孤立片段;涉及页面改动时,应配合本地预览和构建检查确认视觉效果。

总安装

588

周安装

25

GitHub Stars

4

下载量

206
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:react-flow-usage(React flow 使用)
来源仓库:https://github.com/thedogwiththedataonit/react-flow
仓库路径:skills/react-flow-usage
安装命令:
npx skills add https://github.com/thedogwiththedataonit/react-flow --skill react-flow-usage
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/thedogwiththedataonit/react-flow --skill react-flow-usage

简介

帮助理解和使用 React Flow 的基础技能。

  • 适用于入门级流程图或数据可视化项目开发。react-flow-usage 属于前端设计类 Skill,可作为该场景下的辅助能力补充。
  • 提供基本节点创建、拖拽和连线操作的实现方法。
  • 通过 GitHub 安装,需配合官方文档了解 API 细节。
  • 建议在本地逐步添加功能,避免一次性引入过多复杂性。

SKILL.md

React Flow Usage Guide

Comprehensive patterns and best practices for building production-ready node-based UIs with React Flow (@xyflow/react v12+).

When to Use This Skill

Apply these guidelines when:

  • Building workflow editors, flow diagrams, or node-based interfaces
  • Creating custom node or edge components
  • Implementing drag-and-drop functionality for visual programming
  • Optimizing performance for graphs with 100+ nodes
  • Managing flow state, save/restore, or undo/redo
  • Implementing auto-layout with dagre, elkjs, or custom algorithms
  • Integrating React Flow with TypeScript

Rule Categories by Priority

PriorityCategoryFocusPrefix
1Setup & ConfigurationCRITICALsetup-
2Performance OptimizationCRITICALperf-
3Node PatternsHIGHnode-
4Edge PatternsHIGHedge-
5State ManagementHIGHstate-
6Hooks UsageMEDIUMhook-
7Layout & PositioningMEDIUMlayout-
8Interaction PatternsMEDIUMinteraction-
9TypeScript IntegrationMEDIUMtypescript-

Quick Start Pattern

import { useCallback } from 'react';
import {
  ReactFlow,
  Background,
  Controls,
  MiniMap,
  useNodesState,
  useEdgesState,
  addEdge
} from '@xyflow/react';
import '@xyflow/react/dist/style.css';

const initialNodes = [
  { id: '1', position: { x: 0, y: 0 }, data: { label: 'Node 1' } },
];

const initialEdges = [
  { id: 'e1-2', source: '1', target: '2' },
];

// Define outside component or use useMemo
const nodeTypes = { custom: CustomNode };
const edgeTypes = { custom: CustomEdge };

function Flow() {
  const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);
  const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);

  const onConnect = useCallback(
    (params) => setEdges((eds) => addEdge(params, eds)),
    [setEdges]
  );

  return (
    <div style={{ width: '100%', height: '100vh' }}>
      <ReactFlow
        nodes={nodes}
        edges={edges}
        onNodesChange={onNodesChange}
        onEdgesChange={onEdgesChange}
        onConnect={onConnect}
        nodeTypes={nodeTypes}
        edgeTypes={edgeTypes}
        fitView
      >
        <Background />
        <Controls />
        <MiniMap />
      </ReactFlow>
    </div>
  );
}

Core Concepts Overview

Node Structure

  • id: Unique identifier (required)
  • position: {x: number, y: number} (required)
  • data: Custom data object (required)
  • type: Built-in or custom type
  • style, className: Styling
  • draggable, selectable, connectable: Interaction controls
  • parentId: For nested/grouped nodes
  • extent: Movement boundaries

Edge Structure

  • id: Unique identifier (required)
  • source: Source node id (required)
  • target: Target node id (required)
  • sourceHandle, targetHandle: Specific handle ids
  • type: 'default' | 'straight' | 'step' | 'smoothstep' | custom
  • animated: Boolean for animation
  • label: String or React component
  • markerStart, markerEnd: Arrow markers

Handle Usage

  • Position: Position.Top | Bottom | Left | Right
  • Type: 'source' | 'target'
  • Multiple handles per node supported
  • Use unique id prop for multiple handles

Essential Patterns

Custom Nodes

import { memo } from 'react';
import { Handle, Position, NodeProps } from '@xyflow/react';

const CustomNode = memo(({ data, selected }: NodeProps) => {
  return (
    <div className={`custom-node ${selected ? 'selected' : ''}`}>
      <Handle type="target" position={Position.Top} />
      <div>{data.label}</div>
      <Handle type="source" position={Position.Bottom} />
    </div>
  );
});

// IMPORTANT: Define outside component
const nodeTypes = { custom: CustomNode };

Custom Edges

import { BaseEdge, EdgeLabelRenderer, getBezierPath, EdgeProps } from '@xyflow/react';

function CustomEdge({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }: EdgeProps) {
  const [edgePath, labelX, labelY] = getBezierPath({
    sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition,
  });

  return (
    <>
      <BaseEdge path={edgePath} />
      <EdgeLabelRenderer>
        <div style={{
          position: 'absolute',
          transform: `translate(-50%, -50%) translate(${labelX}px,${labelY}px)`,
        }}>
          Custom Label
        </div>
      </EdgeLabelRenderer>
    </>
  );
}

Performance Optimization

// 1. Memoize node/edge types (define outside component)
const nodeTypes = useMemo(() => ({ custom: CustomNode }), []);

// 2. Memoize callbacks
const onConnect = useCallback((params) =>
  setEdges((eds) => addEdge(params, eds)), [setEdges]
);

// 3. Use simple edge types for large graphs
const edgeType = nodes.length > 100 ? 'straight' : 'smoothstep';

// 4. Avoid unnecessary re-renders in custom components
const CustomNode = memo(({ data }) => <div>{data.label}</div>);

Key Hooks

  • useReactFlow() - Access flow instance methods (getNodes, setNodes, fitView, etc.)
  • useNodesState() / useEdgesState() - Managed state with change handlers
  • useNodes() / useEdges() - Reactive access to current nodes/edges
  • useNodesData(id) - Get specific node data (more performant than useNodes)
  • useHandleConnections() - Get connections for a handle
  • useConnection() - Track connection in progress
  • useStore() - Direct store access (use sparingly)

Common Patterns

Drag and Drop

const onDrop = useCallback((event) => {
  event.preventDefault();
  const type = event.dataTransfer.getData('application/reactflow');
  const position = screenToFlowPosition({
    x: event.clientX,
    y: event.clientY,
  });

  setNodes((nds) => nds.concat({
    id: getId(),
    type,
    position,
    data: { label: `${type} node` },
  }));
}, [screenToFlowPosition]);

Save and Restore

const { toObject } = useReactFlow();

// Save
const flow = toObject();
localStorage.setItem('flow', JSON.stringify(flow));

// Restore
const flow = JSON.parse(localStorage.getItem('flow'));
setNodes(flow.nodes || []);
setEdges(flow.edges || []);
setViewport(flow.viewport);

Connection Validation

const isValidConnection = useCallback((connection) => {
  // Prevent self-connections
  if (connection.source === connection.target) return false;

  // Custom validation logic
  return true;
}, []);

Detailed Rules

For comprehensive patterns and best practices, see individual rule files in the rules/ directory organized by category:

rules/setup-*.md          - Critical setup patterns
rules/perf-*.md           - Performance optimization
rules/node-*.md           - Node customization patterns
rules/edge-*.md           - Edge handling patterns
rules/state-*.md          - State management
rules/hook-*.md           - Hooks usage
rules/layout-*.md         - Layout and positioning
rules/interaction-*.md    - User interactions
rules/typescript-*.md     - TypeScript integration

Full Compiled Documentation

For the complete guide with all rules and examples expanded: see AGENTS.md

Scraped Documentation Reference

Comprehensive scraped documentation from reactflow.dev is available in scraped/:

  • Learn: scraped/learn-concepts/, scraped/learn-customization/, scraped/learn-advanced/
  • API: scraped/api-hooks/, scraped/api-types/, scraped/api-utils/, scraped/api-components/
  • Examples: scraped/examples-nodes/, scraped/examples-edges/, scraped/examples-interaction/, scraped/examples-layout/
  • UI Components: scraped/ui-components/
  • Tutorials: scraped/learn-tutorials/
  • Troubleshooting: scraped/learn-troubleshooting/

Common Issues

  1. Couldn't create edge - Add onConnect handler
  2. Nodes not draggable - Check nodesDraggable prop
  3. CSS not loading - Import @xyflow/react/dist/style.css
  4. useReactFlow outside provider - Wrap with <ReactFlowProvider>
  5. Performance issues - See Performance category rules
  6. TypeScript errors - Use proper generic types useReactFlow<NodeType, EdgeType>()

References

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

27.41%
按下载量换算56

Codex

21.34%
按下载量换算44

OpenCode

19.19%
按下载量换算40

Cursor

14.04%
按下载量换算29

Antigravity

7.61%
按下载量换算16

Gemini CLI

3.3%
按下载量换算7

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

来源信息

继续浏览同类 Skills