mirror of
https://gitee.com/ByteDance/flowgram.ai.git
synced 2025-07-07 17:43:29 +08:00
fix(container): container render bounds delay
This commit is contained in:
parent
d8ce164255
commit
970fd09ec4
@ -21,35 +21,34 @@ export const ContainerNodeContainer: FC<IContainerNodeContainer> = ({ children }
|
|||||||
const [height, setHeight] = useState(size.height);
|
const [height, setHeight] = useState(size.height);
|
||||||
|
|
||||||
const updatePorts = () => {
|
const updatePorts = () => {
|
||||||
requestAnimationFrame(() => {
|
const portsData = node.getData<WorkflowNodePortsData>(WorkflowNodePortsData);
|
||||||
const portsData = node.getData<WorkflowNodePortsData>(WorkflowNodePortsData);
|
portsData.updateDynamicPorts();
|
||||||
portsData.updateDynamicPorts();
|
};
|
||||||
});
|
|
||||||
|
const updateSize = () => {
|
||||||
|
// 无子节点时
|
||||||
|
if (node.blocks.length === 0) {
|
||||||
|
setWidth(size.width);
|
||||||
|
setHeight(size.height);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 存在子节点时,只监听宽高变化
|
||||||
|
setWidth(transform.bounds.width);
|
||||||
|
setHeight(transform.bounds.height);
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const updateSize = () => {
|
|
||||||
// 无子节点时
|
|
||||||
if (node.blocks.length === 0) {
|
|
||||||
setWidth(size.width);
|
|
||||||
setHeight(size.height);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// 存在子节点时,只监听宽高变化
|
|
||||||
if (width !== transform.bounds.width) {
|
|
||||||
setWidth(transform.bounds.width);
|
|
||||||
}
|
|
||||||
if (height !== transform.bounds.height) {
|
|
||||||
setHeight(transform.bounds.height);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
updateSize();
|
|
||||||
const dispose = transform.onDataChange(() => {
|
const dispose = transform.onDataChange(() => {
|
||||||
updateSize();
|
updateSize();
|
||||||
updatePorts();
|
updatePorts();
|
||||||
});
|
});
|
||||||
return () => dispose.dispose();
|
return () => dispose.dispose();
|
||||||
}, [transform]);
|
}, [transform, width, height]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
// 初始化触发一次
|
||||||
|
updateSize();
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ContainerNodeContainerStyle
|
<ContainerNodeContainerStyle
|
||||||
|
|||||||
@ -102,6 +102,7 @@ export class NodeIntoContainerService {
|
|||||||
x: parentTransform.position.x + nodeJSON.meta!.position!.x,
|
x: parentTransform.position.x + nodeJSON.meta!.position!.x,
|
||||||
y: parentTransform.position.y + nodeJSON.meta!.position!.y,
|
y: parentTransform.position.y + nodeJSON.meta!.position!.y,
|
||||||
});
|
});
|
||||||
|
parentTransform.fireChange();
|
||||||
await this.nextFrame();
|
await this.nextFrame();
|
||||||
parentTransform.fireChange();
|
parentTransform.fireChange();
|
||||||
this.emitter.fire({
|
this.emitter.fire({
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user