onMounted와 onBeforeMount
onMounted에서 DOM에 접근하는 방법과 onBeforeMount를 직접 사용할 일이 드문 이유를 알아봅니다.
onMounted와 onBeforeMount은(는) CoddyKit의 무료 Vue Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Vue Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Vue Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
마운트 전후의 훅
마운트 단계에는 두 가지 훅이 있습니다. onBeforeMount는 DOM이 생성되기 직전에 실행되고, onMounted는 DOM이 삽입된 직후에 실행됩니다. 둘은 비슷해 보이지만 용도는 매우 다릅니다.
onMounted: DOM이 준비된 시점
onMounted가 실행될 때는 컴포넌트 템플릿이 렌더링되어 페이지에 표시된 상태입니다. 템플릿 참조가 실제 요소를 가리키므로 DOM 작업은 이곳에서 수행합니다.
<script setup>
import { ref, onMounted } from 'vue'
const box = ref(null)
onMounted(() => {
console.log(box.value.offsetWidth)
})
</script>사용 사례: 차트 초기화
DOM 요소에 그림을 그리는 라이브러리는 먼저 해당 요소가 존재해야 합니다. onMounted에서 참조된 요소를 전달하여 초기화하세요.
<script setup>
import { ref, onMounted } from 'vue'
const canvas = ref(null)
onMounted(() => {
const ctx = canvas.value.getContext('2d')
// draw chart with ctx
})
</script>사용 사례: DOM 측정
크기, 위치 또는 스크롤 오프셋을 읽으려면 실제 DOM이 필요합니다. onMounted는 요소를 측정할 수 있는 가장 이른 안전한 시점입니다.
onMounted(() => {
const rect = box.value.getBoundingClientRect()
console.log(rect.height)
})사용 사례: 초기 데이터 가져오기
컴포넌트가 표시될 때 데이터를 가져오는 것은 전형적인 onMounted 작업입니다. 결과를 참조에 저장하면 데이터가 도착했을 때 템플릿이 업데이트됩니다.
<script setup>
import { ref, onMounted } from 'vue'
const posts = ref([])
onMounted(async () => {
const res = await fetch('/api/posts')
posts.value = await res.json()
})
</script>onMounted는 한 번만 실행됩니다
onMounted는 각 컴포넌트 인스턴스에서 한 번만 실행됩니다. 컴포넌트가 언마운트된 후 다시 생성되면 새 인스턴스에서 자체 onMounted가 실행됩니다.
onBeforeMount: 삽입 직전
onBeforeMount는 설정이 끝난 후, DOM이 생성되기 전에 실행됩니다. 반응형 상태는 존재하지만 아직 아무것도 렌더링되지 않았으므로 템플릿 참조는 여전히 null입니다.
<script setup>
import { onBeforeMount } from 'vue'
onBeforeMount(() => {
console.log('about to render')
})
</script>onBeforeMount가 거의 필요하지 않은 이유
대부분의 설정 작업은 <script setup>에서 직접 수행할 수 있습니다. 이 코드는 이미 마운트 전에 실행됩니다. 또한 DOM과 관련된 작업은 onMounted까지 기다려야 합니다. 따라서 onBeforeMount의 실용적인 용도는 많지 않습니다.
흔한 실수
설정 코드나 onBeforeMount 안에서 템플릿 참조에 접근하면 null이 반환됩니다. 마운트가 완료될 때까지 요소가 존재하지 않기 때문입니다. DOM 접근은 항상 onMounted로 옮기세요.
<script setup>
import { ref } from 'vue'
const input = ref(null)
console.log(input.value) // null - too early!
</script>여러 훅 등록하기
onMounted는 여러 번 호출할 수 있으며, 모든 콜백이 순서대로 실행됩니다. 따라서 컴포저블마다 독립적으로 자체 onMounted를 등록할 수 있습니다.
onMounted(() => console.log('first'))
onMounted(() => console.log('second'))둘 중 선택하기
- onMounted: DOM을 사용할 수 있음 — 차트, 측정, 포커스, 데이터 가져오기
- onBeforeMount: 렌더링 전 훅이며 DOM이 없으므로 거의 필요하지 않음
빠른 확인
마운트 훅에 대한 지식을 테스트해 보세요.
복습
마운트 훅 요약:
onMounted는 DOM 삽입 후 실행됩니다. 차트 초기화, 측정, 포커스 및 초기 데이터 가져오기에 사용하세요.- 각 인스턴스에서 한 번 실행되며 여러 번 등록할 수 있습니다.
onBeforeMount는 DOM에 접근할 수 없는 렌더링 전에 실행되며 거의 필요하지 않습니다.
자주 묻는 질문
“onMounted와 onBeforeMount” 강의는 무료인가요?
네 — “onMounted와 onBeforeMount” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Vue Academy 강의 전체를 잠금 해제할 수 있습니다. Vue Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“onMounted와 onBeforeMount”에서 뭘 배우나요?
onMounted에서 DOM에 접근하는 방법과 onBeforeMount를 직접 사용할 일이 드문 이유를 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 Vue Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Vue Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Vue Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“onMounted와 onBeforeMount” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Vue Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Vue Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 라이프사이클 단계 개요
- onMounted와 onBeforeMount
- onUpdated와 onBeforeUpdate
- onUnmounted와 정리 패턴