refactor(nodes): don't re-render on pan #677
This commit is contained in:
@@ -12,7 +12,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
|
|||||||
id,
|
id,
|
||||||
type,
|
type,
|
||||||
data,
|
data,
|
||||||
transform,
|
scale,
|
||||||
xPos,
|
xPos,
|
||||||
yPos,
|
yPos,
|
||||||
selected,
|
selected,
|
||||||
@@ -199,7 +199,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
|
|||||||
onStart={onDragStart}
|
onStart={onDragStart}
|
||||||
onDrag={onDrag}
|
onDrag={onDrag}
|
||||||
onStop={onDragStop}
|
onStop={onDragStop}
|
||||||
scale={transform[2]}
|
scale={scale}
|
||||||
disabled={!isDraggable}
|
disabled={!isDraggable}
|
||||||
cancel=".nodrag"
|
cancel=".nodrag"
|
||||||
nodeRef={nodeElement}
|
nodeRef={nodeElement}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import React, { memo, ComponentType, MouseEvent } from 'react';
|
|||||||
|
|
||||||
import { useStoreState } from '../../store/hooks';
|
import { useStoreState } from '../../store/hooks';
|
||||||
import { getNodesInside } from '../../utils/graph';
|
import { getNodesInside } from '../../utils/graph';
|
||||||
import { Node, Transform, NodeTypesType, WrapNodeProps, Elements, Edge } from '../../types';
|
import { Node, NodeTypesType, WrapNodeProps, Elements, Edge } from '../../types';
|
||||||
|
|
||||||
interface NodeRendererProps {
|
interface NodeRendererProps {
|
||||||
nodeTypes: NodeTypesType;
|
nodeTypes: NodeTypesType;
|
||||||
@@ -22,7 +22,7 @@ interface NodeRendererProps {
|
|||||||
function renderNode(
|
function renderNode(
|
||||||
node: Node,
|
node: Node,
|
||||||
props: NodeRendererProps,
|
props: NodeRendererProps,
|
||||||
transform: Transform,
|
scale: number,
|
||||||
selectedElements: Elements | null,
|
selectedElements: Elements | null,
|
||||||
nodesDraggable: boolean,
|
nodesDraggable: boolean,
|
||||||
nodesConnectable: boolean,
|
nodesConnectable: boolean,
|
||||||
@@ -57,7 +57,7 @@ function renderNode(
|
|||||||
onContextMenu={props.onNodeContextMenu}
|
onContextMenu={props.onNodeContextMenu}
|
||||||
onNodeDragStart={props.onNodeDragStart}
|
onNodeDragStart={props.onNodeDragStart}
|
||||||
onNodeDragStop={props.onNodeDragStop}
|
onNodeDragStop={props.onNodeDragStop}
|
||||||
transform={transform}
|
scale={scale}
|
||||||
selected={isSelected}
|
selected={isSelected}
|
||||||
style={node.style}
|
style={node.style}
|
||||||
className={node.className}
|
className={node.className}
|
||||||
@@ -93,7 +93,7 @@ const NodeRenderer = (props: NodeRendererProps) => {
|
|||||||
return (
|
return (
|
||||||
<div className="react-flow__nodes" style={transformStyle}>
|
<div className="react-flow__nodes" style={transformStyle}>
|
||||||
{renderNodes.map((node) =>
|
{renderNodes.map((node) =>
|
||||||
renderNode(node, props, transform, selectedElements, nodesDraggable, nodesConnectable, elementsSelectable)
|
renderNode(node, props, transform[2], selectedElements, nodesDraggable, nodesConnectable, elementsSelectable)
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
+1
-1
@@ -201,7 +201,7 @@ export interface WrapNodeProps {
|
|||||||
type: string;
|
type: string;
|
||||||
data: any;
|
data: any;
|
||||||
selected: boolean;
|
selected: boolean;
|
||||||
transform: Transform;
|
scale: number;
|
||||||
xPos: number;
|
xPos: number;
|
||||||
yPos: number;
|
yPos: number;
|
||||||
isSelectable: boolean;
|
isSelectable: boolean;
|
||||||
|
|||||||
Reference in New Issue
Block a user