Node
The Node type represents everything React Flow needs to know about a given node.
Many of these properties can be manipulated both by React Flow or by you, but
some such as width and height should be considered read-only.
export type Node<
NodeData extends Record<string, unknown> = Record<string, unknown>,
NodeType extends string = string,
> = {
id: string;
position: XYPosition;
data: NodeData;
type?: NodeType;
sourcePosition?: Position;
targetPosition?: Position;
hidden?: boolean;
selected?: boolean;
dragging?: boolean;
draggable?: boolean;
selectable?: boolean;
connectable?: boolean;
resizing?: boolean;
deletable?: boolean;
dragHandle?: string;
width?: number | null;
height?: number | null;
parentId?: string;
zIndex?: number;
extent?: 'parent' | CoordinateExtent;
expandParent?: boolean;
ariaLabel?: string;
focusable?: boolean;
style?: React.CSSProperties;
className?: string;
origin?: NodeOrigin;
handles?: NodeHandle[];
measured?: {
width?: number;
height?: number;
};
};Fields
| Name | Type | Default |
|---|---|---|
id | stringUnique id of a node. | |
position | XYPositionPosition of a node on the pane. | |
data | NodeDataArbitrary data passed to a node. | |
type | NodeTypeType of node defined in | |
sourcePosition | PositionOnly relevant for default, source, target nodeType. Controls source position. | |
targetPosition | PositionOnly relevant for default, source, target nodeType. Controls target position. | |
selected | boolean | |
dragging | booleanWhether or not the node is currently being dragged. | |
draggable | booleanWhether or not the node is able to be dragged. | |
selectable | boolean | |
connectable | boolean | |
deletable | boolean | |
dragHandle | stringA class name that can be applied to elements inside the node that allows those elements to act as drag handles, letting the user drag the node by clicking and dragging on those elements. | |
width | number | |
height | number | |
initialWidth | number | |
initialHeight | number | |
parentId | stringParent node id, used for creating sub-flows. | |
zIndex | number | |
extent | "parent" | CoordinateExtentBoundary a node can be moved in. | |
expandParent | booleanWhen | |
ariaLabel | string | |
origin | NodeOriginOrigin of the node relative to its position. | |
handles | NodeHandle[] | |
measured | { width?: number; height?: number; } |
Default node types
You can create any of React Flow’s default nodes by setting the type property
to one of the following values:
"default""input""output""group"
If you don’t set the type property at all, React Flow will fallback to the
"default" node with both an input and output port.
These default nodes are available even if you set the nodeTypes
prop to something else, unless you override any of these keys directly.
Notes
- You shouldn’t try to set the
widthorheightof a node directly. It is calculated internally by React Flow and used when rendering the node in the viewport. To control a node’s size you should use thestyleorclassNameprops to apply CSS styles instead.