From 23e81831fecb6a35bef572cb049863102567d4ee Mon Sep 17 00:00:00 2001 From: HarlanLuo <luoxwen@gmail.com> Date: Thu, 20 Dec 2018 11:37:35 +0800 Subject: [PATCH] Carousel: stop timer before component destroyed (#13820) --- packages/carousel/src/main.vue | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/carousel/src/main.vue b/packages/carousel/src/main.vue index 3983ce4fc..561e4fc9a 100644 --- a/packages/carousel/src/main.vue +++ b/packages/carousel/src/main.vue @@ -181,11 +181,14 @@ export default { }, pauseTimer() { - clearInterval(this.timer); + if (this.timer) { + clearInterval(this.timer); + this.timer = null; + } }, startTimer() { - if (this.interval <= 0 || !this.autoplay) return; + if (this.interval <= 0 || !this.autoplay || this.timer) return; this.timer = setInterval(this.playSlides, this.interval); }, @@ -257,6 +260,7 @@ export default { beforeDestroy() { if (this.$el) removeResizeListener(this.$el, this.resetItemPosition); + this.pauseTimer(); } }; </script>