방명록
- [Vue.js] Bootstrap Autoplaying Carousel 오작동 문제2024년 09월 27일 14시 00분 09초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
1. Bootstrap Autoplaying Carousel 오작동 문제
https://getbootstrap.com/docs/5.3/components/carousel/#autoplaying-carousels
위 링크는 부트스트랩 캐로우셀 자동 슬라이드 예제이다. 핵심은 data-bs-ride 속성에 "carousel"을 적용하면 캐로우셀의 슬라이드가 자동으로 넘어간다. 이 코드를 Vue.js 프로젝트에 적용했는데 오작동 문제가 발생했다.
해당 페이지를 처음 열었을 때는 슬라이드가 정상적으로 동작하는데 다른 페이지에 다녀오면 멈춰 있다. 다음 버튼을 클릭하면 그제야 슬라이드가 동작하기 시작한다. 사용자의 버튼 이벤트 발생 시 자동 플레이가 되는 옵션은 "carousel"이 아니라 "true"이며 나의 경우 분명히 "carousel" 옵션을 주었다. 그런데 왜...?
2. 컴포넌트가 만들어질 때 클릭 이벤트 일으켜 문제 해결
Autoplaying Carousel로 작동하도록 해결한 아이디어는 컴포넌트가 마운트 될 때 캐로우셀의 다음 슬라이드로 넘어가도록 하는 버튼에 클릭 이벤트를 주는 방식이었다. 라이프 사이클 훅에서 mounted, created에서 클릭 이벤트를 일으키면 될 것 같았다. 그래서 아래 코드를 각각 추가해 보았는데 created에 적용한 경우만 동작하였다.
created() { this.getDashBoard() this.$nextTick(() => { const nextButton = this.$refs.nextButton if (nextButton) { nextButton.click() } }) },
아래 코드는 <template> 태그의 캐로우셀 버튼이다. 위 코드와 연동하기 위해 ref 속성을 추가하면 된다.
<button class="carousel-control-next" style="right: -0.8rem; width: auto" type="button" data-bs-target="#carouselExampleControls" data-bs-slide="next" ref="nextButton" > <span class="carousel-control-next-icon" aria-hidden="true"></span> <span class="visually-hidden">Next</span> </button>
728x90반응형'언어·프레임워크 > Vue.js' 카테고리의 다른 글
[Vue.js] vue-chartjs에 datalabels 적용 (0) 2024.10.10 [Vue.js] 카운트다운 서클 타이머 버튼 만들기 (0) 2024.10.04 [Vue.js] watch로 두개 이상의 값 변경 감지 (0) 2024.09.25 [Vue.js] 서버 이전 후 애플리케이션을 실행했는데 지도가 렌더링되지 않았다! ReferenceError: kakao is not defined (0) 2024.03.13 [Vue.js] 토스트 팝업시 오디오 재생 가능? 브라우저의 자동 재생 정책은 안가능! (0) 2023.09.25 다음글이 없습니다.이전글이 없습니다.댓글