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) {