Skip to content

Commit 2f5b1a3

Browse files
committed
fix: self-removing ENABLED_ELEMENT causing *kaboom*
1 parent 7812095 commit 2f5b1a3

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

src/CornerstoneViewport/CornerstoneViewport.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,7 @@ class CornerstoneViewport extends Component {
301301
componentWillUnmount() {
302302
const clear = true;
303303

304+
this._handleOnElementEnabledEvent(clear);
304305
this._bindInternalCornerstoneEventListeners(clear);
305306
this._bindInternalElementEventListeners(clear);
306307
this._bindExternalEventListeners('cornerstone', clear);
@@ -565,28 +566,31 @@ class CornerstoneViewport extends Component {
565566
* @memberof CornerstoneViewport
566567
* @returns {undefined}
567568
*/
568-
_handleOnElementEnabledEvent = () => {
569+
_handleOnElementEnabledEvent = (clear = false) => {
569570
const handler = evt => {
570571
const elementThatWasEnabled = evt.detail.element;
571572
if (elementThatWasEnabled === this.element) {
572573
// Pass Event
573574
this.props.onElementEnabled(evt);
574-
575-
// Stop Listening
576-
cornerstone.events.removeEventListener(
577-
cornerstone.EVENTS.ELEMENT_ENABLED,
578-
handler
579-
);
580575
}
581576
};
582577

583578
// Start Listening
584-
if (this.props.onElementEnabled) {
579+
if (this.props.onElementEnabled && !clear) {
585580
cornerstone.events.addEventListener(
586581
cornerstone.EVENTS.ELEMENT_ENABLED,
587582
handler
588583
);
589584
}
585+
586+
// Stop Listening
587+
if (clear) {
588+
// Stop Listening
589+
cornerstone.events.removeEventListener(
590+
cornerstone.EVENTS.ELEMENT_ENABLED,
591+
handler
592+
);
593+
}
590594
};
591595

592596
/**

0 commit comments

Comments
 (0)