From f6d3bad34e12c3176e805977daf7b1d80da56c03 Mon Sep 17 00:00:00 2001 From: Xintong Xia Date: Tue, 20 Aug 2019 09:25:43 -0700 Subject: [PATCH] Fix --- modules/react-map-gl-draw/src/mode-handler.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/react-map-gl-draw/src/mode-handler.js b/modules/react-map-gl-draw/src/mode-handler.js index 61182c20e..0ff9c9443 100644 --- a/modules/react-map-gl-draw/src/mode-handler.js +++ b/modules/react-map-gl-draw/src/mode-handler.js @@ -71,6 +71,7 @@ export default class ModeHandler extends Component { constructor() { super(); this.state = defaultState; + this._eventsRegistered = false; this._events = { anyclick: evt => this._onEvent(this._onClick, evt, true), @@ -88,11 +89,11 @@ export default class ModeHandler extends Component { if (this.props.mode !== nextProps.mode) { this._clearEditingState(); - if (nextProps.mode === MODES.READ_ONLY) { + if (this._eventsRegistered && (!nextProps.mode || nextProps.mode === MODES.READ_ONLY)) { this._degregisterEvents(); } - if ((!this.props.mode || this.props.mode === MODES.READ_ONLY) && nextProps.mode) { + if (!this._eventsRegistered && nextProps.mode && nextProps.mode !== MODES.READ_ONLY) { this._registerEvents(); } @@ -133,6 +134,7 @@ export default class ModeHandler extends Component { } _events: any; + _eventsRegistered: boolean; _modeHandler: any; _context: ?MapContext; _containerRef: ?HTMLElement; @@ -228,6 +230,7 @@ export default class ModeHandler extends Component { return; } eventManager.off(this._events); + this._eventsRegistered = false; }; _registerEvents = () => { @@ -237,6 +240,7 @@ export default class ModeHandler extends Component { return; } eventManager.on(this._events, ref); + this._eventsRegistered = true; }; _onEvent = (handler: Function, evt: MjolnirEvent, stopPropagation: boolean) => {