最新要闻
- 文物 | 博物馆文物的数字化保护与管理
- 马上就要过期的食品打一折:能买吗?安全吗?
- 马斯克计划打造世界第三大AI公司 或整合特斯拉和推特
- 世界快报:强对流天气预警:今天起 多地将有8-10级雷暴大风或冰雹
- 奇丑无比的洞洞鞋凭啥风靡全球?但是 绝对别穿它上扶梯-天天热消息
- 蔚来ES6上市当天 李想立下flag:10月份理想L7月销破2万辆_前沿热点
- 天天动态:弃“元”投“AI”,传百度副总裁马杰加入创新工场,成立AIGC公司
- 美媒:无人机袭击克宫或为乌特别部门策划-全球热讯
- 36.8万起!蔚来全新ES6开卖:激光雷达、零百4.5秒 会成爆款吗
- 入门即高配!比亚迪宋Pro DM-i冠军版今日上市:纯电续航再提升
- 超110万辆特斯拉到底何时召回?时间点来了 强制单踏板再见
- 百公里油耗仅仅7.4升!依维柯聚星正式上市:13.68万元起
- 全新宝马5系发布:内饰、科技大升级 看眼后视镜就能自动变道
- 世界今亮点!在旧时光里注入新生机——湖南郴州“唤醒老屋”行动观察
- 最美不过二次元【AI】
- 黑人女玩家谈《Forspoken》差评如潮:种族主义者的偏见|世界观热点
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
使用react-flow制作流程图
react-flow是一个用于构建基于节点的应用程序的库。这些可以是简单的静态图或复杂的基于节点的编辑器。同时react-flow支持自定义节点类型和边线类型,并且它附带一些组件,可以查看缩略图的Mini Map和悬浮控制器Controls.
2.react-flow安装
npm install react-flow-renderer # npm yarn add react-flow-renderer # Yarn
3.react-flow基本使用
1、每个节点固定格式 里面添加内容
代码
index.tsx
import React from "react";import ReactFlow, { addEdge, MiniMap, Controls, Background, useNodesState, useEdgesState,} from "react-flow-renderer";import { nodes as initialNodes, edges as initialEdges } from "./initial-elements";const OverviewFlow = () => { const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes); const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); const onConnect = (params) => setEdges((eds) => addEdge(params, eds)); return (// 背景图 可以配置颜色 方格宽度 );};export default OverviewFlow;
initial-elements.ts节点与连接线数据
import { MarkerType } from "react-flow-renderer";export const nodes = [ { id: "1", // id必须 type: "input", // 类型: input开始 default默认 output结束 区别在于连接点不一样 data: { // 额外的数据 label: ( // 节点名称 <> Welcome to React Flow! > ), // value: 5, .... // 可以将其他数据放入 }, position: { x: 250, y: 0 }, // 节点位置 }, { id: "2", data: { label: ( <> This is a default node > ), }, position: { x: 100, y: 100 }, }, { id: "3", data: { label: ( <> This one has a custom style > ), }, position: { x: 400, y: 100 }, style: { background: "#D6D5E6", color: "#333", border: "1px solid #222138", width: 180, }, }, { id: "4", position: { x: 250, y: 200 }, data: { label: "Another default node", }, }, { id: "5", data: { label: "Node id: 5", }, position: { x: 250, y: 325 }, }, { id: "6", type: "output", data: { label: ( <> An output node > ), }, position: { x: 100, y: 480 }, }, { id: "7", type: "output", data: { label: "Another output node" }, position: { x: 400, y: 450 }, },];export const edges = [ { id: "e1-2", source: "1", target: "2", label: "this is an edge label" }, { id: "e1-3", source: "1", target: "3" }, { id: "e3-4", // id必须 source: "3", // 连接线起始节点id target: "4", // 连接线结束节点id animated: true, // 连接线是否有动画 label: "animated edge", // 连接线名称 }, { id: "e4-5", source: "4", target: "5", label: "edge with arrow head", markerEnd: { // 连接线尾部的箭头 type: MarkerType.ArrowClosed, }, }, { id: "e5-6", source: "5", target: "6", type: "smoothstep", // 连接线类型 default straight step smoothstep label: "smooth step edge", }, { id: "e5-7", source: "5", target: "7", type: "step", style: { stroke: "#f6ab6c" }, // 连接线颜色 label: "a step edge", animated: true, labelStyle: { fill: "#f6ab6c", fontWeight: 700 }, // 连接线名称样式 },];
效果图
2、自定义每个节点中的内容和样式 以及连接点
这个是静态的 展示流程图 想拖动节点 加上1里面的onNodesChange... 的参数即可
index.tsx
import React, {useEffect} from "react";import ReactFlow, { useNodesState, useEdgesState,} from "react-flow-renderer";import {nodes as initialNodes, edges as initialEdges} from "./initial-elements";import CustomNode from "./ResizableNode"; //自定义的渲染每个节点的代码const nodeTypes = { custom: CustomNode, //自定义的内容};const OverviewFlow = ({resizeFlag}: any) => { const [nodes, setNodes] = useNodesState(initialNodes); const [edges] = useEdgesState(initialEdges); useEffect(() => { setNodes([]); setTimeout(() => { setNodes(initialNodes); }, 50); }, [resizeFlag]); if (!nodes?.length) { return null; } return ();};export default OverviewFlow; > {/**/}
initial-elements.ts
import {MarkerType, Position} from "react-flow-renderer";const styles = { color: "#333", border: "1px solid #4E8FF0", borderRadius: "5px", background: "white",};//因为数据太多删除了几个 不过格式都是这样写export const nodes = [ { id: "0", type: "custom",//有input,output,default三种,input只有一个输出,output只有一个输入,default输入输出各有一个 或者自定义的 data: { label: "", }, position: {x: -20, y: 40}, // 节点位置 style: { width: 1550, height: 500, border: "1px solid #91caff", borderRadius: "15px", color: "#4585F2", background: "#E2E6F3", zIndex: -2, }, }, { id: "1", // id必须 type: "custom", // 类型: input开始 default默认 output结束 区别在于连接点不一样 data: { // 额外的数据 label: "任务1", // value: 1 // .... // 可以将其他数据放入 }, position: {x: 200, y: 70}, // 节点位置 style: { width: 200, height: 150, ...styles, }, }, { id: "2", type: "custom", data: { label: "任务2", }, position: {x: 450, y: 70}, style: { width: 200, height: 150, }, }, { id: "3", type: "custom", data: { label: ( "任务3" ), }, position: {x: 700, y: 70}, style: { width: 200, height: 150, ...styles, }, }];export const edges = [ { id: "1-2", source: "1", target: "2", markerEnd: { // 连接线尾部的箭头 type: MarkerType.ArrowClosed, color: "#4E8FF0", }, style: {stroke: "#4E8FF0"}, // 连接线颜色 labelStyle: {fill: "#4E8FF0", fontWeight: 700}, // 连接线名称样式 }, { id: "2-3", // id必须 source: "2", // 连接线起始节点id target: "3", // 连接线结束节点id markerEnd: { // 连接线尾部的箭头 type: MarkerType.ArrowClosed, color: "#4E8FF0", }, style: {stroke: "#4E8FF0"}, // 连接线颜色 labelStyle: {fill: "#4E8FF0", fontWeight: 700}, // 连接线名称样式 }, { id: "3-4", source: "3", target: "4", style: {stroke: "#4E8FF0"}, // 连接线颜色 labelStyle: {fill: "#4E8FF0", fontWeight: 700}, // 连接线名称样式 markerEnd: { // 连接线尾部的箭头 type: MarkerType.ArrowClosed, color: "#4E8FF0", }, }];
ResizableNode.tsx
import React, {memo} from "react";import {Handle, Position} from "react-flow-renderer";import className from "./home.module.scss";import newTask from "@/static/newTask.png";import Operator from "@/static/OperatorConfig.png";import DeployTask from "@/static/DeploymentTask.png";import TaskReview from "@/static/TaskReview.png";import TaskLaunch from "@/static/TaskLaunch.png";import {Button} from "antd";const datadevelopment = [ { id: "0", }, { src: newTask, id: "1", button: "快速开始", url: "", width: "50px", height: "50px", }, { src: Operator, id: "11", button: "配置说明", link: "", width: "45px", height: "45px", }, { src: DeployTask, id: "3", title: "任务基本信息", width: "55px", height: "55px", },];export default memo(({data, id, isConnectable}: any) => { // console.log(1, data); const position = (sum: any) => { switch (sum) { case "6": return Position.Right; case "9": return Position.Top; default: return Position.Left; } }; const pageButton = (item: any) => { if (item.link) { return ( ); } else { return ( ); } }; return ();});{ datadevelopment.filter((item: any) => { return item.id === id; }).map((item: any) => { return ( +item.id < 12 ? {item.src ? : null}:{data.label}
{item.button ? pageButton(item) : {item.title}}{ item.order ?); }) }{item.order}
: null }{data.label}
{ item.button ? pageButton(item) : null }
效果图
收集的一些关于 react-flow 参数讲解链接以及官网地址
https://www.5axxw.com/wiki/content/obkffc
https://reactflow.dev/
关键词:
文物 | 博物馆文物的数字化保护与管理
马上就要过期的食品打一折:能买吗?安全吗?
马斯克计划打造世界第三大AI公司 或整合特斯拉和推特
世界快报:强对流天气预警:今天起 多地将有8-10级雷暴大风或冰雹
奇丑无比的洞洞鞋凭啥风靡全球?但是 绝对别穿它上扶梯-天天热消息
蔚来ES6上市当天 李想立下flag:10月份理想L7月销破2万辆_前沿热点
天天动态:弃“元”投“AI”,传百度副总裁马杰加入创新工场,成立AIGC公司
实时:gPTP时钟同步(时间同步服务器)助力智能驾驶应用
当前消息!直播源码技术实现游戏组队功能
【环球财经】惠誉评级把美国长期外币发行人违约评级展望列为“负面”
美媒:无人机袭击克宫或为乌特别部门策划-全球热讯
springboot~统一处理日期请求参数java.utils.Date和java.time.LocalDate_天天播报
【一步步开发AI运动小程序】七、进行运动计时、计数
36.8万起!蔚来全新ES6开卖:激光雷达、零百4.5秒 会成爆款吗
入门即高配!比亚迪宋Pro DM-i冠军版今日上市:纯电续航再提升
超110万辆特斯拉到底何时召回?时间点来了 强制单踏板再见
百公里油耗仅仅7.4升!依维柯聚星正式上市:13.68万元起
全新宝马5系发布:内饰、科技大升级 看眼后视镜就能自动变道
世界今亮点!在旧时光里注入新生机——湖南郴州“唤醒老屋”行动观察
全球快报:第六章.数据结构与算法基础(重点)
今日快讯:海康威视SDK - 门禁admin用户密码设置
当前速递!走进Linux世界,学习Linux系统的必备指南
最美不过二次元【AI】
黑人女玩家谈《Forspoken》差评如潮:种族主义者的偏见|世界观热点
结婚6年没孩子 查出丈夫非男性:医生科普是性反转综合征 网友刷新认知
焦点短讯!Windows 11打破隔阂 苹果安卓手机都能连 五大功能你用过没?
最高省1800元!iPhone 14 Pro系列京东618便宜了:抢券6499元起
当前关注:首款高通骁龙W5+智能手表!TicWatch Pro 5发布 续航45天
学系统集成项目管理工程师(中项)系列26_新兴信息技术-环球短讯
tn系统的三种适用范围_tn系统 天天新要闻
【环球时快讯】国际金融市场早知道:5月25日
四大证券报精华摘要:5月25日-环球今亮点
索尼宣布串流掌机
磁带存储不死!2022年逆市增长 2028年机械硬盘将消失?
天天微动态丨能像纸一样弯曲!我国成功研制出高柔韧性单晶硅太阳电池
世界微速讯:惠普新款暗影精灵9锐龙版上架:满血锐龙7+RTX 4060 首发6799元
今日dnf主线任务没了_dnf主线任务没了怎么办
做好持久战准备!小米自研芯片决心不动摇:盘点小米造芯之路
《刺客信条:幻景》10月12日发售:预售已开启_世界看热讯
世界焦点!小萝莉被杀真实案件 小萝莉被
快讯:将Android手机无线连接到Ubuntu实现唱跳Rap
gitlab ci 集成 eslint/prettier/tsc 做代码审查,并使用 eslint 输出作为显示代码质量 天天新视野
环球快播:人类暴露?外星文明快要联系地球了:美国算出时间
OPPO Pad 2新版开启预售:天玑9000加持 2599元|每日播报
焦点热议:国民神车MINI EV销量暴跌:五菱还有下一个爆款吗
最伟大Windows降临:操作系统彻底改变
iQOO Pad预售:最强天玑平板 2389元起
山东省高校毕业生就业信息网 山东省毕业生信息网
焦点观察:宝宝晚上睡觉不踏实总是翻来覆去_宝宝晚上睡觉不踏实翻来覆去怎么办
焦点日报:这些员工申报个税 可扣除6万元减除费用
天天速递!电子科大和四川美院第三届联合教学与创作成果展开幕式举行
神车卡罗拉迎来最新版,第五代丰田 THS 升级在哪?-今日播报
全球快播:英国通胀降至8.7%,但食品价格仍疯涨!鲍里斯又被告到警方,还是因为派对门…
湖南省湘电试研技术有限公司荣列先进制造业企业政策支持名单
Dubbo实践-全球热推荐
GPT-4通过了waitlist,私信爆了!
全球今日讯!10-阻塞赋值和非阻塞赋值
中国驻洛杉矶总领馆提醒中国公民防范电信诈骗
世界热推荐:小米机皇赢麻了!13 Ultra京东好评率超过99%
纯白千层镜!影驰RTX 4060 Ti 8GB星曜OC图赏
员工每天带薪上厕所3至6小时被解雇:法院判了 环球热闻
【天天快播报】618首销第一天Redmi霸占预售榜前三名 卢伟冰:孤独
精彩看点:Java设计模式-享元模式
这对中意“姐妹”世界遗产地 共话生态保护_世界微动态
多地加快推进基础设施工程建设
韩一季度总和生育率0.81 创历年同期最低
天天讯息:2149元太香了!AMD RX 7600正式发布:最高提速55%
硬刚RTX 4060!AMD RX 7600图赏|世界新视野
焦点热议:两对情侣因争位置在迪士尼起冲突:双方已调解
老外吐槽RTX 4060 Ti/RX 7600:2023年了 2000多元还是1080P游戏显卡
天天看热讯:白色机身玩趣十足!索泰RTX 4060 Ti X-GAMING显卡图赏
辽宁沈阳一老人乘坐地铁禁止周边人玩手机 称辐射会导致自己眼睛模糊
《闪电侠》电影曝光IMAX和杜比影院海报 继续由埃兹拉·米勒饰演
电影《速度与激情10》上映7天 总票房破6亿,
杨紫琼主演《西游ABC》现已正式播出 为迪士尼+原创奇幻动作喜剧
游客意外掉到野生大黄鱼 在阳光照耀下十分耀眼
徐克导演《射雕英雄传侠之大者》获得2023重点档期推荐影片 由肖战主演
为进一步激活汽车消费 宁波市实施社会车辆提前淘汰财政奖励补贴
杭州一宝妈因网红穿着产生不满 担心对孩子的心理产生不良影响
网易于多伦多和蒙特利尔成立新的游戏工作室 将开发首款开放世界游戏
马斯克称自己的时间管理安排非常困难 现已确定一位接班人
环球今热点:押上一切声誉!小米汽车2024年量产 雷军:今年一季度投入11亿
营收大跌45.9% 小鹏汽车1季度财报公布 CEO放豪言:G6将成爆款
出现重大风险至股价大幅下跌?科大讯飞:谣言 AI“搞的” 今日观点
支持录音实时转写!讯飞录音降噪会议耳机iFLYBUDS Nano+图赏
累计已发21版驱动!Intel:Arc显卡将持续针对DX9/11/12优化
上海沿浦最新公告:拟定增募资不超过3.9亿元-天天讯息
c#中用System.Diagnostics.Process.Start(Path.GetFullPath(“vlc.exe.lnk“), url);用vlc的
Java 创建/识别条形码
前沿资讯!3DS在线商店关闭后:任天堂新补丁堵死破解可能
甲醇汽车:想说爱你 却怕“中毒”!这四点无解
捷克开发者新技术:改变游戏/电影种族 让黑人变白人_全球快看点
全球视讯!金光灿灿真耀眼!游客钓上野生大黄鱼:市场价过万元
今日观点!1899元 米家智能跑步机上架:降噪无刷电机、全跑道设计
又什么又什么的词语大全 又什么又什么的词语
焦点速讯:会话控制
2023年5月24日正己酸价格最新行情预测|时讯
环球快看:小米组建AI实验室大模型团队:AI领域人员已超1200人
大的要来了!国产3A大作《黑神话:悟空》官方B站上号|世界时讯
天天热点评!多品牌多口味正大促! 真真老老地道嘉兴肉粽:四枚9.9元