React-Flow :All You Need To Know In This Library.

Azim Uddin Ahamed
3 min readAug 4, 2021

React flow is a highly customizable diagram or flow renderer library and you can customize as you want.

Hey Developers,

This is Azim. I am going to share with you a highly customizable library called react flow. The name of the npm package yarn add react-flow-renderer`.

lets see how will be look like at a glance.

a simple customization.
react-flow basic (screenshots from the docs page)

Let’s jump into it. and let’s make some progressive demo that will actually work to you. I will break down this some steps so that would be easier to get the best way. Hurray,

Step-1:

First of all, you need to create a react-app by using this command npx create-react-app . Then open the react app. then run this command

npm install --save react-flow-renderer

Or

yarn add react-flow-renderer

Step-2:

Create a file name FlowSection.jsx under the src folder and hook up with app.js . and paste this code .

`import React, { useState } from ‘react’;

import ReactFlow, {removeElements,addEdge,MiniMap,Controls,Background,} from 'react-flow-renderer';const initialElements = [{id: '1',type: 'input',data: {label: (<>Welcome to <strong>React Flow!</strong></>),},position: { x: 250, y: 0 },},{id: '2',data: {label: (<>This is a <strong>default node</strong></>),},position: { x: 100, y: 100 },},{id: '3',data: {label: (<>This one has a <strong>custom style</strong></>),},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 <strong>output node</strong></>),},position: { x: 100, y: 480 },},{id: '7',type: 'output',data: { label: 'Another output node' },position: { x: 400, y: 450 },},{ id: 'e1-2', source: '1', target: '2', label: 'this is an edge label' },{ id: 'e1-3', source: '1', target: '3' },{id: 'e3-4',source: '3',target: '4',animated: true,label: 'animated edge',},{id: 'e4-5',source: '4',target: '5',arrowHeadType: 'arrowclosed',label: 'edge with arrow head',},{id: 'e5-6',source: '5',target: '6',type: '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 },},]const onLoad = (reactFlowInstance) => {console.log('flow loaded:', reactFlowInstance);reactFlowInstance.fitView();};const OverviewFlow = () => {const [elements, setElements] = useState(initialElements);const onElementsRemove = (elementsToRemove) =>setElements((els) => removeElements(elementsToRemove, els));const onConnect = (params) => setElements((els) => addEdge(params, els));return (<ReactFlowelements={elements}onElementsRemove={onElementsRemove}onConnect={onConnect}onLoad={onLoad}snapToGrid={true}snapGrid={[15, 15]}><MiniMapnodeStrokeColor={(n) => {if (n.style?.background) return n.style.background;if (n.type === 'input') return '#0041d0';if (n.type === 'output') return '#ff0072';if (n.type === 'default') return '#1a192b';return '#eee';}}nodeColor={(n) => {if (n.style?.background) return n.style.background;return '#fff';}}nodeBorderRadius={2}/><Controls /><Background color="#aaa" gap={16} /></ReactFlow>);};export default OverviewFlow;
Output of this code.

That’s it

If you need to know how to customize it and if you need to know to how update the node Name and data of the node and edge.

please, let me know.

--

--