Skip to content

[Bug Report]: 更新节点宽高时边路径不跟随变化 #2011

@DymoneLewis

Description

@DymoneLewis

发生了什么?

排查了一下1.0版本的demo里也复现了这个问题,应该是个陈年bug
https://codesandbox.io/p/devbox/logicflowdemo-g3nc5g
初步定位到问题的原因主要在于节点宽高变化后,对应的锚点坐标没有更新,从而导致边的起终点没变化的现象出现
核心只要解决锚点坐标不更新就行

目前尝试了一下比较可行的临时解决方案是手动删除再新增边:

const { nodes } = lfRef.current?.graphModel
nodes.forEach((node) => {
const {
incoming: { edges: incomingEdges },
outgoing: { edges: outgoingEdges },
} = node;
node.setProperties({
width: 20,
height: 100,
});
incomingEdges.forEach((edge) => {
const edgeInfo = edge.getData();
lfRef.current?.deleteEdge(edgeInfo.id);
lfRef.current?.addEdge({
sourceNodeId: edgeInfo.sourceNodeId,
targetNodeId: edgeInfo.targetNodeId,
sourceAnchorId: edgeInfo.sourceAnchorId,
targetAnchorId: edgeInfo.targetAnchorId,
type: edgeInfo.type,
properties: edgeInfo.properties,
})
});
outgoingEdges.forEach((edge) => {
const edgeInfo = edge.getData();
lfRef.current?.deleteEdge(edgeInfo.id);
lfRef.current?.addEdge({
sourceNodeId: edgeInfo.sourceNodeId,
targetNodeId: edgeInfo.targetNodeId,
sourceAnchorId: edgeInfo.sourceAnchorId,
targetAnchorId: edgeInfo.targetAnchorId,
type: edgeInfo.type,
properties: edgeInfo.properties,
})
});

修复方案。。。暂时还没有想的特别清楚,也欢迎看到的朋友一起讨论

logicflow/core版本

1.x + 2.x

logicflow/extension版本

logicflow/engine版本

No response

浏览器&环境

Chrome

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions