Diagnostic: Warn if `removeEventListener` is not called in `disconnect()`
Opened this issue · 0 comments
marcoroth commented
When writing Stimulus controllers you might find yourself adding and removing event listeners in the connect
and disconnect
lifecycle methods.
We should add a diagnostic to the controller, if the event listener gets added but not removed in disconnect
.
Don't:
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
connect() {
document.addEventListener("event", () => { })
}
}
Do:
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
connect() {
document.addEventListener("event", () => { })
}
disconnect() {
document.removeEventListener("event", () => { })
}
}
or, alternatively:
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
initialize() {
// So the event listener only gets added once
document.addEventListener("event", () => { })
}
}