diff --git a/packages/components/carousel/__tests__/carousel.test.tsx b/packages/components/carousel/__tests__/carousel.test.tsx
index 516fb80b79..efc9989386 100644
--- a/packages/components/carousel/__tests__/carousel.test.tsx
+++ b/packages/components/carousel/__tests__/carousel.test.tsx
@@ -411,4 +411,41 @@ describe('Carousel', () => {
vm.$refs.carousel.prev()
expect(vm.$refs.carousel.activeIndex).toBe(1)
})
+
+ it('should continue auto play after adding new items dynamically', async () => {
+ const data = reactive([1, 2, 3])
+
+ wrapper = mount({
+ setup() {
+ return () => (
+
+
+ {data.map((value) => (
+
+ {value}
+
+ ))}
+
+
+ )
+ },
+ })
+
+ await nextTick()
+ const vm = wrapper.vm
+
+ expect(vm.$refs.carousel.activeIndex).toBe(0)
+
+ await wait(40)
+ expect(vm.$refs.carousel.activeIndex).toBe(1)
+
+ data.push(4)
+ await nextTick()
+
+ expect(wrapper.findAll('.el-carousel__item').length).toBe(4)
+ expect(vm.$refs.carousel.activeIndex).toBe(0)
+
+ await wait(80)
+ expect(vm.$refs.carousel.activeIndex).toBe(2)
+ })
})
diff --git a/packages/components/carousel/src/use-carousel.ts b/packages/components/carousel/src/use-carousel.ts
index 58db453212..0f3207c622 100644
--- a/packages/components/carousel/src/use-carousel.ts
+++ b/packages/components/carousel/src/use-carousel.ts
@@ -214,7 +214,7 @@ export const useCarousel = (
function resetTimer() {
pauseTimer()
- if (!props.pauseOnHover) startTimer()
+ if (!props.pauseOnHover || !hover.value) startTimer()
}
function setContainerHeight(height: number) {