refactor: 메모리 누수 정리 및 타이머 관리 개선, 이벤트 리스너 제거 함수 추가

This commit is contained in:
“hyeonggkim”
2025-11-14 16:47:38 +09:00
parent ffa89ffbb6
commit ae7fb5fd60
10 changed files with 283 additions and 12 deletions

View File

@@ -19,6 +19,7 @@ const props = withDefaults(defineProps<Props>(), {
})
const videoRef = ref<HTMLVideoElement | null>(null)
let pauseTimeoutId: ReturnType<typeof setTimeout> | null = null
// autoplay prop 변경 시 재생/정지 제어
watch(
@@ -26,19 +27,36 @@ watch(
shouldPlay => {
if (!videoRef.value) return
// 이전 타이머 정리
if (pauseTimeoutId) {
clearTimeout(pauseTimeoutId)
pauseTimeoutId = null
}
if (shouldPlay) {
videoRef.value.play().catch(err => {
console.warn('Video play failed:', err)
})
} else {
setTimeout(() => {
videoRef.value.pause()
videoRef.value.currentTime = 0
pauseTimeoutId = setTimeout(() => {
if (videoRef.value) {
videoRef.value.pause()
videoRef.value.currentTime = 0
}
pauseTimeoutId = null
}, 200)
}
}
)
onBeforeUnmount(() => {
// 타이머 정리
if (pauseTimeoutId) {
clearTimeout(pauseTimeoutId)
pauseTimeoutId = null
}
})
// src 변경 시 비디오 다시 로드
watch(
() => props.src,