网站首页 > 技术文章 正文
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
什么是 xyflow
React Flow | Svelte Flow - Powerful open source libraries for building node-based UIs with React (https://reactflow.dev) or Svelte (https://svelteflow.dev). Ready out-of-the-box and infinitely customizable.
xyflow 是强大的开源库,用于使用 React 或 Svelte 构建基于节点的 UI。开箱即用,可无限定制。
xyflow 存储库包含四个特定的包:
- React Flow 12 @xyflow/react
- React Flow 11 ReactFlow v11 分支
- Svelte Flow @xyflow/svelte
- svelte 共享帮助程序库 @xyflow/system
目前 xyflow 在 GIthub 通过 MIT 协议开源,有超过 22.6k 的 star、。5k 的 fork、项目依赖量 5.2k、代码贡献者 90+、妥妥的前端优质开源项目。
如何使用 xyflow
如果是在 React 中使用,可以先安装下面的包:
npm install @xyflow/react
// react 项目
npm install @xyflow/svelte
// svelte 项目
当然,开发者也可以使用下面方法快速开始一个 vite 项目:
npx degit xyflow/vite-react-flow-template app-name
// pnpm
pnpm create vite my-react-flow-app -- --template react
// yarn
yarn create vite my-react-flow-app -- --template react
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 样式表。
- 组件必须包裹在具有宽度和高度的元素中。
当然,开发者还可以通过特定的方法为节点添加交互性,比如下面的示例:
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>
);
}
在 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>
更多关于 xyflow 的用法和示例可以参考文末资料,本文不再过多展开。
参考资料
https://github.com/xyflow/xyflow
https://reactflow.dev/learn
https://www.xyflow.com/
猜你喜欢
- 2025-06-24 Android主流UI开源库整理(android ui 布局开源框架)
- 2025-06-24 【开源力荐】一款基于 Ant Design 风格开源、免费、现代化的 WinForm UI 界面库,全面支持AOT!
- 2024-10-05 Vue组件库系列一:基于 vue-cli3 打造属于自己的 UI 库
- 2024-10-05 腾讯出品的一个超棒的 Android UI 库
- 2024-10-05 超优秀 Vue3.0 开源UI组件库 vue3.0开源项目
- 2024-10-05 目前流行前端几大UI框架 web前端ui框架有哪些
- 2024-10-05 LuLu UI - 腾讯阅文集团出品的“半封装”开源 Web UI 组件库,支持 Vue
- 2024-10-05 FrozenUI - 腾讯出品的手机QQ风格前端UI库
- 2024-10-05 SUI Mobile - 阿里出品的小巧且精美的手机H5前端UI库
- 2024-10-05 从 Element UI 源码的构建流程来看前端 UI 库设计
你 发表评论:
欢迎- 656℃几个Oracle空值处理函数 oracle处理null值的函数
- 646℃Oracle分析函数之Lag和Lead()使用
- 644℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 637℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 632℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 621℃【数据统计分析】详解Oracle分组函数之CUBE
- 617℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 597℃大学生悬浮窗搜题答案神器?分享8个软件和公众号,来对比看看吧
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)