It automatically cleans up timers and event listeners in beforeUnmount
.
Because who wants to write boilerplate? And I was bored. And it seemed like a really good idea, until I wrote it.
I didn't actually test this. But... maybe it works, right?
import Vue from "vue";
import VueCleanup from "@/plugins/VueCleanup.js";
Vue.use(VueCleanup);
// Somecomponent.vue
export default {
created() {
this.$setInterval(this.doInterval, 2000);
this.$addEventListener("resize", this.onResize, { passive: true });
},
methods: {
doInterval() {
console.log("Are we there yet?");
},
onResize() {
console.log("Hey stop triggering so much layout/reflow. :(");
}
}
}
I think in
VueCleanup.js
on line11
it should be:this.$_listeners.forEach(([event, callback]) => window.removeEventListener(event, callback));
(notice_listeners
instead of_intervals
)