Регистрирую обработчик (для события клика). Перед регистрацией обработчика я очищаю один и тот же обработчик, чтобы не регистрировать два одинаковых обработчика.
Я использую горячую замену модуля Webpack. Каждый раз, когда я что-то меняю в исходном коде JavaScript, часть кода, регистрирующая обработчик, запускается повторно.
Однако обработчик никогда не удаляется.
export default class TaskHandlers {
// Called from index.js
registerAddTaskClick(addTaskElementId) {
let element = document.querySelector(`#${addTaskElementId}`);
if (element !== null) {
// Never clears the handler
element.removeEventListener('click', this.handleAddTaskClick);
// Keeps piling on new handlers on every HMR.
element.addEventListener('click', this.handleAddTaskClick);
}
}
handleAddTaskClick(event) {
console.log('Clicked');
}
}
Если я запускаю element.removeEventListener()
вручную, удаляется только последний обработчик.