refactor(elementUpdater): dont create additional nodes object

This commit is contained in:
moklick
2020-07-25 14:04:08 +02:00
parent 2fee4c35ae
commit 3da7efae35
+4 -6
View File
@@ -13,10 +13,8 @@ const useElementUpdater = (elements: Elements): void => {
const setEdges = useStoreActions((a) => a.setEdges); const setEdges = useStoreActions((a) => a.setEdges);
useEffect(() => { useEffect(() => {
const nodes: Node[] = elements.filter(isNode); const nextEdges: Edge[] = elements.filter(isEdge).map((e) => parseElement(e) as Edge);
const edges: Edge[] = elements.filter(isEdge).map((e) => parseElement(e) as Edge); const nextNodes: Node[] = elements.filter(isNode).map((propNode) => {
const nextNodes: Node[] = nodes.map((propNode) => {
const existingNode = stateNodes.find((n) => n.id === propNode.id); const existingNode = stateNodes.find((n) => n.id === propNode.id);
if (existingNode) { if (existingNode) {
@@ -83,14 +81,14 @@ const useElementUpdater = (elements: Elements): void => {
}); });
const nodesChanged: boolean = !isEqual(stateNodes, nextNodes); const nodesChanged: boolean = !isEqual(stateNodes, nextNodes);
const edgesChanged: boolean = !isEqual(stateEdges, edges); const edgesChanged: boolean = !isEqual(stateEdges, nextEdges);
if (nodesChanged) { if (nodesChanged) {
setNodes(nextNodes); setNodes(nextNodes);
} }
if (edgesChanged) { if (edgesChanged) {
setEdges(edges); setEdges(nextEdges);
} }
}, [elements, stateNodes, stateEdges]); }, [elements, stateNodes, stateEdges]);
}; };