refactor(nodes): don't re-render on pan #677

This commit is contained in:
moklick
2020-11-10 17:06:18 +01:00
parent 959216f6fc
commit 5e28762f53
3 changed files with 7 additions and 7 deletions
+2 -2
View File
@@ -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}
+4 -4
View File
@@ -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
View File
@@ -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;