Skip to Content
You are viewing the v12 docs of React Flow. You can find the latest version here.
ExamplesLayout

Dagre Tree

This example shows how you can integrate dagre.js  with React Flow to create simple tree layouts. Good alternatives to dagre are d3-hierarchy  or elkjs  if you are looking for a more advanced layouting library.

const position = { x: 0, y: 0 }; const edgeType = 'smoothstep'; export const initialNodes = [ { id: '1', type: 'input', data: { label: 'input' }, position, }, { id: '2', data: { label: 'node 2' }, position, }, { id: '2a', data: { label: 'node 2a' }, position, }, { id: '2b', data: { label: 'node 2b' }, position, }, { id: '2c', data: { label: 'node 2c' }, position, }, { id: '2d', data: { label: 'node 2d' }, position, }, { id: '3', data: { label: 'node 3' }, position, }, { id: '4', data: { label: 'node 4' }, position, }, { id: '5', data: { label: 'node 5' }, position, }, { id: '6', type: 'output', data: { label: 'output' }, position, }, { id: '7', type: 'output', data: { label: 'output' }, position }, ]; export const initialEdges = [ { id: 'e12', source: '1', target: '2', type: edgeType, animated: true }, { id: 'e13', source: '1', target: '3', type: edgeType, animated: true }, { id: 'e22a', source: '2', target: '2a', type: edgeType, animated: true }, { id: 'e22b', source: '2', target: '2b', type: edgeType, animated: true }, { id: 'e22c', source: '2', target: '2c', type: edgeType, animated: true }, { id: 'e2c2d', source: '2c', target: '2d', type: edgeType, animated: true }, { id: 'e45', source: '4', target: '5', type: edgeType, animated: true }, { id: 'e56', source: '5', target: '6', type: edgeType, animated: true }, { id: 'e57', source: '5', target: '7', type: edgeType, animated: true }, ];

This example is a demonstration of static layouting. If the nodes or edges in the graph change, the layout won’t recalculate! It is possible to do dynamic layouting with dagre (and other libraries), though: see the auto layout pro example for an example of this.

Last updated on