快速入门
如果您希望尽快上手,那么您来对了地方!本页面将带您在几分钟内从零开始创建一个可工作的 React Flow 应用程序。从那里,您可以更深入地了解 React Flow 的本质,查看示例,或深入研究 API 文档。
React Flow 在 60 秒内
在线玩
您无需在本地进行任何设置,即可通过查看我们在 CodeSandbox 上提供的入门项目来试用 React Flow。
Vite 模板
如果您想立即开始,可以使用我们的 Vite 模板
npx degit xyflow/vite-react-flow-template app-name
安装
要开始在本地进行操作,您应该具备以下几项内容
首先,按照您喜欢的方式启动一个新的 React 项目;我们建议使用 Vite,但您可以随意选择。
npm create vite@latest my-react-flow-app -- --template react
React Flow 在 npm 上发布为 @xyflow/react
,因此您可以继续添加它。
npm install @xyflow/react
最后,启动开发服务器,我们就可以开始了!
npm run dev
创建您的第一个流程
reactflow
包将 <ReactFlow />
组件导出为默认导出。有了它以及一些节点和边,我们就可以开始操作了!将 App.jsx
中的所有内容删除,并添加以下内容
import React from 'react';
import { ReactFlow } from '@xyflow/react';
import '@xyflow/react/dist/style.css';
const initialNodes = [
{ id: '1', position: { x: 0, y: 0 }, data: { label: '1' } },
{ id: '2', position: { x: 0, y: 100 }, data: { label: '2' } },
];
const initialEdges = [{ id: 'e1-2', source: '1', target: '2' }];
export default function App() {
return (
<div style={{ width: '100vw', height: '100vh' }}>
<ReactFlow nodes={initialNodes} edges={initialEdges} />
</div>
);
}
这里有几件事需要注意
- 您必须导入 React Flow 样式表。
<ReactFlow />
组件必须包含在具有宽度和高度的元素中。
添加交互性
使用 React Flow 创建的图形完全具有交互性。我们可以移动节点,将它们连接在一起,删除它们……要获得基本功能,我们需要添加三件事
幸运的是,我们提供了一些钩子,使这变得很容易!
import React, { useCallback } from 'react';
import {
ReactFlow,
useNodesState,
useEdgesState,
addEdge,
} from '@xyflow/react';
import '@xyflow/react/dist/style.css';
const initialNodes = [
{ id: '1', position: { x: 0, y: 0 }, data: { label: '1' } },
{ id: '2', position: { x: 0, y: 100 }, data: { label: '2' } },
];
const initialEdges = [{ id: 'e1-2', source: '1', target: '2' }];
export default function App() {
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: '100vw', height: '100vh' }}>
<ReactFlow
nodes={nodes}
edges={edges}
onNodesChange={onNodesChange}
onEdgesChange={onEdgesChange}
onConnect={onConnect}
/>
</div>
);
}
一些额外的好东西
最后,React Flow 附带了一些开箱即用的插件,用于诸如 <Minimap />
或视窗 <Controls />
之类的东西。
import React, { useCallback } from 'react';
import {
ReactFlow,
MiniMap,
Controls,
Background,
useNodesState,
useEdgesState,
addEdge,
} from '@xyflow/react';
import '@xyflow/react/dist/style.css';
const initialNodes = [
{ id: '1', position: { x: 0, y: 0 }, data: { label: '1' } },
{ id: '2', position: { x: 0, y: 100 }, data: { label: '2' } },
];
const initialEdges = [{ id: 'e1-2', source: '1', target: '2' }];
export default function App() {
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: '100vw', height: '100vh' }}>
<ReactFlow
nodes={nodes}
edges={edges}
onNodesChange={onNodesChange}
onEdgesChange={onEdgesChange}
onConnect={onConnect}
>
<Controls />
<MiniMap />
<Background variant="dots" gap={12} size={1} />
</ReactFlow>
</div>
);
}
就是这样。您已经创建了第一个交互式流程!请查看下面的链接,了解下一步的去向。