티스토리 뷰
아래와 같은 목록은 unMounted hook에서 직접적으로 해제시켜 줘야한다.
해제 목록
| ⏱ 타이머 | setTimeout, setInterval | clearInterval(timerId) |
| 🧭 이벤트 | DOM 이벤트, 전역 이벤트 | window.removeEventListener(...) |
| 💨 비동기 요청 | fetch, axios (취소 가능할 때) | abortController.abort() |
| 🎣 watch, effect | Vue의 watch, watchEffect | stop() 사용 or onCleanup() |
| 🔁 subscription | WebSocket, EventSource, MQTT 등 | socket.close(), unsubscribe() |
| 🧬 외부 라이브러리 | chart.js, mapbox, video.js 등 | instance.destroy(), dispose() 등 |
| 🧱 MutationObserver | DOM 변경 감지 시 사용 | observer.disconnect() |
| 💾 DB, 캐시 등 | IndexedDB, LocalForage 등 연결 | 연결 종료 로직 |
| 🧪 custom composable | 내부에서 등록된 리소스 해제 | return { stopFn } 형식으로 처리 |
흔히 사용하는 것으로는 document.addEventListner, setInterval 이 있다.
Composable 활용
위 객체 대상들에 대한 Composable 함수를 생성하여 해제 하는 과정을 캡슐화 할 수 있음.
vueUse 에는 useEventListener 등이 그러한 함수.
유의사항
watch내에서 composable을 사용하면 onUnmounted 가 제대로 동작하지 않음.
반드시 setup 훅 내에서 사용해준다.
Bad: Watch 내에서 composable 사용
<script setup>
const someData = ref()
watch(someData, () => {
useEventListener(...)
})
</script>
GOOD
<script setup>
const someData = ref()
const stop = useEventListener(...);
watch(someData, (val) => {
val ? stop.resume() : stop.pause(); // ⏯️ 동적 제어
});
</script>
watch를 사용하여 제어 할 일이 있으면 stop 함수 를 이용하여 제어하는 것이 좋다.
☑️ 중지 및 시작에 대한 composable을 생성시에는 stop 함수를 반드시 구현해주어 유연하게 처리 할 수 있도록 한다
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- nuxt3 quasar 설정
- Oracle Database 19C 설치
- 외래키 삭제
- unmounted document.addlistener
- unplugin-auto-import
- vue 타이머 해제
- nuxt3 프로젝트 설정
- docker mssql
- docker image 경량화
- vue watch 문제점
- vue onunmounted
- nuxt3 eslint prettier 설정
- nuxt3 structure
- 스마트피싱보호_캠페인
- docker multi stage build
- docker mssql 이미지 생성
- vue unmounted
- 티스토리챌린지
- vue watch 위험성
- oracle 19c 설치
- dockerignore
- vue 이벤트 해제
- 오블완
- Oracle Database 19c install
- docker mssql create database
- vue 리팩토링
- vue watch 대체
- unmounted setinterval
- unmounted composable
- 스파르타 코딩클럽
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함
