diff --git a/packages/react-diagrams-core/src/entities/link/LinkWidget.tsx b/packages/react-diagrams-core/src/entities/link/LinkWidget.tsx index a64c081..5f64cb2 100644 --- a/packages/react-diagrams-core/src/entities/link/LinkWidget.tsx +++ b/packages/react-diagrams-core/src/entities/link/LinkWidget.tsx @@ -47,6 +47,8 @@ export class LinkWidget extends React.Component { installTarget() { this.targetListener && this.targetListener.deregister(); + + if (!this.props.link.getTargetPort()) return; this.targetListener = this.props.link.getTargetPort().registerListener({ reportInitialPosition: (event: BaseEntityEvent) => { this.forceUpdate(); @@ -56,6 +58,8 @@ export class LinkWidget extends React.Component { installSource() { this.sourceListener && this.sourceListener.deregister(); + + if (!this.props.link.getSourcePort()) return; this.sourceListener = this.props.link.getSourcePort().registerListener({ reportInitialPosition: (event: BaseEntityEvent) => { this.forceUpdate(); diff --git a/packages/react-diagrams-core/src/entities/node/NodeWidget.tsx b/packages/react-diagrams-core/src/entities/node/NodeWidget.tsx index 271b268..1070151 100644 --- a/packages/react-diagrams-core/src/entities/node/NodeWidget.tsx +++ b/packages/react-diagrams-core/src/entities/node/NodeWidget.tsx @@ -36,6 +36,9 @@ export class NodeWidget extends React.Component { componentWillUnmount(): void { this.ob.disconnect(); this.ob = null; + + this.listener.deregister(); + this.listener = null; } componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any): void {