Thanks to visit codestin.com
Credit goes to GitHub.com

Skip to content

React Flow | Svelte Flow - 功能强大的开源库,可使用 React ( https://reactflow.dev ) 或 Svelte ( https://svelteflow.dev ) 构建基于节点的 UI。开箱即用,可无限定制。

License

Notifications You must be signed in to change notification settings

yuanxiaoming8899/xyflow

 
 

Repository files navigation

xyflow-标头 xyflow-header-深色

GitHub 许可证 MIT npm 下载 npm 下载

功能强大的开源库,可使用 React 或 Svelte 构建基于节点的 UI。开箱即用且可无限自定义。

React Flow · Svelte Flow · React Flow Pro · Discord


xyflow mono 仓库

xyflow 存储库包含四个软件包:

商业用途

您是否在个人项目中使用 React Flow 或 Svelte Flow?太棒了!无需赞助,您可以通过报告发现的任何错误、向我们发送项目截图以及在 Github 上为我们点赞来支持我们 🌟

您是否在组织中使用 React Flow 或 Svelte Flow 并从中获利?太棒了!我们依靠您的支持来保持我们的库在 MIT 许可下开发和维护,这正是我们想要的。对于 React Flow,您可以在React Flow Pro 网站上进行此操作,对于我们的两个库,您都可以通过Github Sponsors进行此操作。

入门

入门的最佳方式是查看React FlowSvelte Flow学习部分。但是,如果你想要了解如何安装和使用这些库,可以在此处查看:

React Flow基本使用

安装

npm install @xyflow/react

基本用法

import { 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' }];

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 ( <ReactFlow nodes={nodes} edges={edges} onNodesChange={onNodesChange} onEdgesChange={onEdgesChange} onConnect={onConnect} > <MiniMap /> <Controls /> <Background /> </ReactFlow> ); }

export default Flow;

<clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w" value="import { 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' }];

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 ( <ReactFlow nodes={nodes} edges={edges} onNodesChange={onNodesChange} onEdgesChange={onEdgesChange} onConnect={onConnect}

<MiniMap />
<Controls />
<Background />
); }

export default Flow;" tabindex="0" role="button">

Svelte Flow基本用法

安装

npm install @xyflow/svelte

基本用法

<script lang="ts">
import { writable } from 'svelte/store';
import {
  SvelteFlow,
  Controls,
  Background,
  BackgroundVariant,
  MiniMap,
} from '@xyflow/svelte';

import '@xyflow/svelte/dist/style.css'

const nodes = writable([
  {
    id: '1',
    type: 'input',
    data: { label: 'Input Node' },
    position: { x: 0, y: 0 }
  },
  {
    id: '2',
    type: 'custom',
    data: { label: 'Node' },
    position: { x: 0, y: 150 }
  }
]);

const edges = writable([
  {
    id: '1-2',
    type: 'default',
    source: '1',
    target: '2',
    label: 'Edge Text'
  }
]);
</script>

<SvelteFlow {nodes} {edges} fitView on:nodeclick={(event) => console.log('on node click', event)} > <Controls /> <Background variant={BackgroundVariant.Dots} /> <MiniMap /> </SvelteFlow>

<clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w" value="<script lang="ts"> import { writable } from 'svelte/store'; import { SvelteFlow, Controls, Background, BackgroundVariant, MiniMap, } from '@xyflow/svelte';

import '@xyflow/svelte/dist/style.css'

const nodes = writable([ { id: '1', type: 'input', data: { label: 'Input Node' }, position: { x: 0, y: 0 } }, { id: '2', type: 'custom', data: { label: 'Node' }, position: { x: 0, y: 150 } } ]);

const edges = writable([ { id: '1-2', type: 'default', source: '1', target: '2', label: 'Edge Text' } ]); </script>

<SvelteFlow {nodes} {edges} fitView on:nodeclick={(event) => console.log('on node click', event)}

" tabindex="0" role="button">

发行

为了发布软件包,我们将变更集变更集 Github 操作结合使用。大致思路是:

  1. 为新功能、更新和修复创建 PR(如果与变更日志相关,则使用变更集)
  2. 合并到主目录
  3. changset 创建一个 PR,根据变更集对所有软件包进行改进
  4. 如果要发布到 Github 和 npm,请合并变更集 PR

xyflow团队

React Flow 和 Svelte Flow 由xyflow背后的团队维护。如果您需要帮助或想与我们讨论合作事宜,请通过我们的 联系表 或加入我们的Discord 服务器与我们联系。

执照

React Flow 和 Svelte Flow 是MIT 许可的

About

React Flow | Svelte Flow - 功能强大的开源库,可使用 React ( https://reactflow.dev ) 或 Svelte ( https://svelteflow.dev ) 构建基于节点的 UI。开箱即用,可无限定制。

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 83.1%
  • Svelte 13.7%
  • CSS 2.6%
  • JavaScript 0.6%