Panning and Zooming
The default pan and zoom behaviour of React Flow feels like a web map. You pan by dragging and zoom by scrolling. You can customize this behaviour easily with the provided props:
panOnDrag
: default:true
panOnScroll
: default:false
(OverwriteszoomOnScroll
)panOnScrollSpeed
: default:0.5
panOnScrollMode
: default:'free'
.'free'
(all directions),'vertical'
(only vertical) or'horizontal'
(only horizontal)zoomOnScroll
: default:true
zoomOnPinch
: default:true
zoomOnDoubleClick
: default:true
If you prefer figma/sketch/design tool controls (panning = press space + drag or trackpad, zooming = cmd + scrolling) you can set panOnScroll={true}
and panOnDrag={keyCondition}
. In this example we are using the useKeyPress
hook from React Flow in order to be able to drag the pane when the space key is pressed:
import ReactFlow, { useKeyPress } from 'react-flow-renderer';
function Flow() {
const spacePressed = useKeyPress('Space');
return <ReactFlow panOnScroll={true} panOnDrag={spacePressed} nodes={[]} edges={[]} />;
}