[Vue] Dom접근 하기 - $ref, $refs개발노트/Vue2021. 8. 9. 22:46
Table of Contents
개념
Vue를 사용하면 직접 Dom요소에 접근할 경우가 거의 없다.
하지만 가끔 Dom을 직접 접근하여 컨트롤 해야 될 경우가 생길 수 있다.
(아마 특정 영역에 focus
를 주기 위해 많이 사용하지 싶다.)
이때 사용하는 속성이 $ref
이다. (자바스크립트의 querySelector와 같은 역할)
$ref 기본기
<template>
<div>
<input type="text" ref="target">
</div>
</template>
<script>
export default {
mounted(){
console.log('target', this.$refs.target);
}
}
</script>
👉 ref="target"
- 접근하고 싶은 태그에
ref
속성명을 할당 한다. ref
는id
처럼 중복이 불가능 하다.
👉 console.log('target', this.$refs.target)
$refs
로 해당 태그에 접근 할 수 있다.- 콘솔에는
<input type="text">
가 출력 된다.
👉 mounted(){ ... }
$refs
는 component가 렌더링 된 후에 접근이 가능하다.- 만약,
beforeCreate
또는created
에서$refs
를 접근하게 된다면undefined
가 출력 된다. (Vue 라이프사이클 에서beforeCreate
,created
는 Dom이 부착되기 전 단계)
가급적 직접 Dom에 접근하는 방법은 지양하는게 좋다.
Vue 2.0 부터는 Virtual DOM을 사용 한다.
Virtual DOM을 사용하는 다양한 이유가 있겠지만, Virtual DOM으로 실제 Dom의 조작을 최소화 하여 Dom을 효율적으로 컨트롤 하기 위해 사용 되어진다.
그런데 $ref
속성으로 Dom에 직접 접근 한다면 Virtual DOM을 사용할 필요성이 없어 진다.
예외적인 상황이 아닌 경우를 제외하고는 가급적 $ref
속성을 지양해야 하는 이유이다.
$ref 속성을 사용한 예제
<template>
<div>
<input type="text" ref="target">
</div>
</template>
<script>
export default {
mounted(){
this.$refs.target.focus();
}
}
</script>
👉 this.$refs.target.focus()
- component가 화면에 렌더링 되면
input
에 focus 된다.
Reference
'개발노트 > Vue' 카테고리의 다른 글
[Vue] Redirected when going ... via a navigation guard. (0) | 2021.08.29 |
---|---|
[Vue] 이벤트 전달 - Props (0) | 2021.08.08 |
[Vue] 조건부 렌더링(v-if, v-show) (1) | 2021.08.04 |
[Vue] input에 숫자만 입력 가능하게 하기 (1) | 2021.08.02 |
[Vue] Naver 간편 로그인 (naverLogin_implicit-1.0.3.js) 구현 (2) | 2021.07.31 |
@superpil :: 주니어 개발자의 성장기
개발 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!