Vue 스터디
[Vue.js] 사용자 정의 디렉티브
옹재
2021. 8. 3. 15:11
728x90
반응형
사용자 정의 디렉티브
vue 에서는 v-model이나 v-show와 같은 디렉티브 외에도 사용자 정의 디렉티브를 등록해서 사용할 수 있습니다. 어떤 로직이 중복해서 사용된다면 그 로직에 대해 디렉티브로 정의해서 코드의 중복을 줄일 수 있는 효과가 있습니다.
directive 등록
디렉티브를 전역, 로컬 2가지로 등록할 수 있습니다.
//전역 main.js
Vue.directive('focus', {
inserted : function(el){
el.focus()
}
})
//로컬
directives: {
//디렉티브 정의
inserted: function(el){
el.focus();
}
}
위와 같이 등록을 한 후에 템플릿에서 아래와 같은 모든 태그에 attribute 추가해서 사용할 수 있습니다.
<input v-focus>
훅 함수
디렉티브는 여러가지 훅 함수를 제공합니다.
- bind : 처음 DOM 엘리먼트에 바인딩 될 때 한번만 호출됩니다. 일회성 설정을 할 수 있습니다.
- inserted : 바인딩된 엘리먼트가 부모 노드에 삽입 되었을 때 호출됩니다.
- update : 포함하는 컴포넌트가 업데이트 된 후 호출됩니다.
- coponentUpdated : 포함하고 있는 컴포넌트와 그 자식들이 업데이트 된 후에 호출됩니다.
- unbind : 디렉티브가 엘리먼트로부터 언바인딩된 경우에만 한번 호출됩니다.
훅 함수 전달인자
- el : 디렉티브가 바인딩된 엘리먼트
- binding : 아래의 속성을 가진 객체
- name : 디렉티브 이름
- value : 디렉티브에서 전달받은 값
- oldValue : 이전 값 (update, componentUpdated에서만 사용 가능)
- expression : 표현식 문자열
- arg : 디렉티브의 전달인자, 있는 경우에만 존재
- modifiers : 포함된 수식어 객체
- vnode : vue 컴파일러가 만든 가상 노드
- oldVnode : 이전의 가상 노드
728x90
반응형