SSENSE/vue-carousel

Bug: Missing cleanup of resize listener

Open

#385 opened on 2019年3月11日

GitHub で見る
 (4 comments) (1 reaction) (0 assignees)JavaScript (513 forks)batch import
buggood first issue

Repository metrics

Stars
 (1,705 stars)
PR merge metrics
 (30d に merged PR はありません)

説明

Bug Report

Currently in the mounted() hook of Carousel.vue, an event listener is attached to window,

  window.addEventListener(
    "resize",
    debounce(this.onResize, this.refreshRate)
  );

But there is no equivalent removeEventListener call in the beforeDestroy() hook.

  beforeDestroy() {
    this.detachMutationObserver();
    window.removeEventListener("resize", this.getBrowserWidth);
    this.$refs["VueCarousel-inner"].removeEventListener(
      this.transitionstart,
      this.handleTransitionStart
    );
    this.$refs["VueCarousel-inner"].removeEventListener(
      this.transitionend,
      this.handleTransitionEnd
    );
    this.$refs["VueCarousel-wrapper"].removeEventListener(
      this.isTouch ? "touchstart" : "mousedown",
      this.onStart
    );
  }

This results in a buildup of listeners on the window object when a page is navigated to and away from multiple times via routing.

コントリビューターガイド