网站首页 > 技术文章 正文
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
什么是 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 库设计
你 发表评论:
欢迎- 06-24发现一款开源宝藏级工作流低代码快速开发平台
- 06-24程序员危险了,这是一个 无代码平台+AI+code做项目的案例
- 06-24一款全新的工作流,低代码快速开发平台
- 06-24如何用好AI,改造自己的设计工作流?
- 06-24濮阳网站开发(濮阳网站建设)
- 06-24AI 如何重塑前端开发,我们该如何适应
- 06-24应届生靠这个Java简历模板拿下了5个offer
- 06-24服务端性能测试实战3-性能测试脚本开发
- 566℃Oracle分析函数之Lag和Lead()使用
- 564℃几个Oracle空值处理函数 oracle处理null值的函数
- 550℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 545℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 543℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 536℃【数据统计分析】详解Oracle分组函数之CUBE
- 526℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 518℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)