From 34bd21ef8d6c73a3c0823d4d27a89f4fe0552927 Mon Sep 17 00:00:00 2001 From: Matyas Korom Date: Wed, 28 Aug 2019 12:59:51 +0200 Subject: [PATCH] Update event handlers if they changed --- src/factory.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/factory.js b/src/factory.js index ac51840..001b9ac 100644 --- a/src/factory.js +++ b/src/factory.js @@ -207,15 +207,23 @@ export default function plotComponentFactory(Plotly) { syncEventHandlers() { eventNames.forEach(eventName => { const prop = this.props['on' + eventName]; - const hasHandler = Boolean(this.handlers[eventName]); + const prevHandler = this.handlers[eventName]; + const hasHandler = Boolean(prevHandler); - if (prop && !hasHandler) { + const registerListener = () => { this.handlers[eventName] = prop; this.el.on('plotly_' + eventName.toLowerCase(), this.handlers[eventName]); + } + + if (prop && !hasHandler) { + registerListener(); } else if (!prop && hasHandler) { // Needs to be removed: this.el.removeListener('plotly_' + eventName.toLowerCase(), this.handlers[eventName]); delete this.handlers[eventName]; + } else if (prop && hasHandler && prop !== prevHandler) { + this.el.removeListener('plotly_' + eventName.toLowerCase(), this.handlers[eventName]); + registerListener(); } }); }