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>