해결된 질문
작성
·
53
0
안녕하세요,
강의에서 메모리 절약을 위해 인터벌을 제거하는 내용을 듣던 중 궁금한 점이 생겼는데요
만약 이벤트창이 닫혔을 때 인터벌을 종료시키고 싶다면 App.svelte가 아닌 Event.svelte 내에 OnDestroy를 작성해주면 되는거겠죠?
App.svelte에 OnDestroy를 작성하신 이유는 이벤트 인덱스를 증가시키는 로직과 이벤트 텍스트 관리를 App.svelte에서 하고있으니 이벤트 창이 열리거나 닫힌 여부와는 상관 없이 App.svelte가 살아있는 동안에는 계속 이벤트배열 인덱스를 증가시키기 위해라고 이해했는데 제가 이해한 내용이 맞을까요??
답변 1
0
안녕하세요?
이벤트 창이 닫혀서 인터벌이 동작할 필요가 없으니 바로 해제하고자 하는 의도이신 듯 합니다.
예제에서 인터벌 함수는 App에서 작동하고 있으니 해당하는 컴포넌트(App)에서 중단시켜야 합니다.
isEvent라는 상태변수를 참고하시어 false 인 경우 창이 닫힐 때 clearInterval을 해주고
true인 경우(창이 보일 때) 인터벌을 다시 실행하는 방법이 좋을 듯 합니다~
아 이해했습니다, 감사합니다!