TechScribe Notes
12_이벤트처리 본문
v-on 디렉티브로 이벤트 처리 가능하고 @단축표현으로 사용 가능함
1.메소드 이벤트 핸들러
:v-on디렉티브에서 메소드 호출 가능하며, 이 때 매개변수로 event객체를 받는다.
const printEventInfo = (event) => {
console.log(event.target);
console.log(event.target.tagName);
};
<div>
<button @click="printEventInfo">printEventInfo</button>
</div>
2. 이벤트 객체 접근
:$event 키워드를 사용하여 접근한다.
const printEventInfo2 = (message, event) => {
console.log('messsage: ', message);
console.log(event.target);
console.log(event.target.tagName);
};
<button @click="printEventInfo2('hello world', $event)">
inline event handler
</button>
3.이벤트 수식어
:event.preventDefault()나 event.stopPropagation()같은 메서드를 이벤트 수식어를 통해 호출할 수 있다.
<!-- 클릭 이벤트 전파가 중단되었습니다. e.stopPropagation()-->
<a @click.stop="doThis"></a>
<!-- 제출 이벤트가 페이지를 다시 로드하지 않습니다. e.preventDefault()-->
<form @submit.prevent="onSubmit"></form>
<!-- 수정자는 체이닝이 가능합니다. e.preventDefault(),e.stopPropagation() -->
<a @click.stop.prevent="doThat"></a>
<!-- 단순히 수식어만 사용이 가능합니다. -->
<form @submit.prevent></form>
<!-- 캡처 모드를 사용할 때 이벤트 리스너를 사용 가능합니다.-->
<!--즉, 내부 엘리먼트를 대상으로 하는 이벤트가 해당 엘리먼트에서 처리되기 전에 여기서 처리합니다. -->
<div @click.capture="doThis">...</div>
<!-- event.target이 엘리먼트 자체인 경우에만 트리거를 처리합니다.오로지 자기자신만 호출.-->
<!-- 자식 엘리먼트에서는 처리되지 않습니다.-->
<div @click.self="doThat">...</div>
<!-- 모바일 장치의 성능을 개선하기 위해 터치 이벤트 리스너와 함께 사용함.-->
<div @scroll.passive="onScroll">...</div>
EventTarget.addEventListener() - Web API | MDN
EventTarget 인터페이스의 addEventListener() 메서드는 지정한 유형의 이벤트를 대상이 수신할 때마다 호출할 함수를 설정합니다.
developer.mozilla.org
4. 키 수식어
<input type="text" @keyup.enter="addTodo" />
-.enter
-.tab
-.delete(delete와 backspace 키 모두를 수신함)
-.esc
-.space
-.up
-.down
-.left
-.right
5. 시스템 키 수식어
:해당 수식어 키가 눌러진 경우에 마우스 또는 키보드 이벤트 리스너를 트리거 할 수 있음
<!-- 알트 + 엔터 -->
<input @keyup.alt.enter="clear" />
<!-- 컨트롤 + 엔터 -->
<input @keyup.ctrl.enter="send" />
<!-- 컨트롤 + 클릭 -->
<div @click.ctrl="doSomething">Do something</div>
-.ctrl
-.alt
-.shift
-.meta (맥에서는 command 키 , 윈도우에서는 meta)
6. exact 수식어
정확한 조합이 눌러져야함
<!-- 아래코드는 Alt 또는 Shift와 함께 눌렀을 때도 실행됩니다.-->
<button @click.ctrl="onClick">A</button>
<!-- 아래코드는 Ctrl키만 눌려져 있을 때 실행됩니다.-->
<button @click.ctrl.exact="onCtrlClick">A</button>
<!-- 아래 코드는 시스템 키가 눌리지 않은 상태인 경우에만 작동합니다.-->
<button @click.exact="onClick">A</button>
7. 마우스 버튼 수식어
-.left
-.right
-.middle
'project > Vue.js' 카테고리의 다른 글
14_watch,watchEffect (0) | 2024.12.10 |
---|---|
13_양방향 바인딩 (v-model) (1) | 2024.12.04 |
11_디렉티브 (1) | 2024.12.03 |
10_목록 랜더링 (1) | 2024.11.29 |
9_조건부 랜더링(v-if, v-show) (0) | 2024.11.29 |