Q4: 이벤트 객체에 접근할 수 있나요?
A4: 예, 이벤트 핸들러의 첫 번째 인자로 DOM 이벤트 객체가 전달됩니다.
```html
```
```javascript
methods: {
handleClick(event) {
console.log(event.target); // 이벤트가 발생한 요소
}
}
```
---
Q5: 이벤트 수신기에서 기본 동작을 막으려면?
A5: `v-on` 디렉티브 뒤에 `.prevent` 수식자를 붙이면 `event.preventDefault()`를 자동 호출합니다.
```html 링크
```
---
Q6: 이벤트 버블링을 중단하려면?
A6: `.stop` 수식자를 사용하면 `event.stopPropagation()`이 자동 적용됩니다.
```html
```
---
Q7: 여러 이벤트 수식자는 함께 사용할 수 있나요?
A7: 네, `.stop`과 `.prevent` 등 여러 수식자를 조합할 수 있습니다.
```html
Vue.js에서 이벤트 처리는 사용자 인터페이스와 상호작용하는 데 중요한 역할을 합니다. Vue.js는 DOM 이벤트를 쉽게 처리할 수 있는 다양한 방법을 제공합니다. 여기서는 Vue.js에서 이벤트를 처리하는 방법에 대해 자세히 설명하겠습니다. 1. 기본 이벤트 처리 Vue.js에서는 `v-on` 디렉티브를 사용하여 DOM 이벤트를 처리할 수 있습니다. `v-on`은 이벤트 리스너를 추가하는 데 사용되며, 간단하게 `@` 기호를 사용하여 축약할 수 있습니다. ```html <template> <button @click="handleClick">Click me</button> </template> <script> export default { methods: { handleClick() { alert('<a href='https://sangseek.com/sangseeks/Button/ko'>Button</a> clicked!'); } } } </script> ``` 위의 예제에서 버튼을 클릭하면 `handleClick` 메서드가 호출되어 알림이 표시됩니다. 2. 이벤트 객체 이벤트 <a href='https://sangseek.com/sangseeks/핸들/ko'>핸들</a>러에 이벤트 객체를 전달할 수 있습니다. 이를 통해 이벤트에 대한 추가 정보를 얻을 수 있습니다. ```html <template> <button @click="handleClick">Click me</button> </template> <script> export default { methods: { handleClick(event) { console.log(event); // 이벤트 객체 출력 } } } </script> ``` 이벤트 객체는 클릭한 요소, 마우스 좌표, 키보드 입력 등 다양한 정보를 포함하고 있습니다. 3. 메서드 인수 전달 이벤트 핸들러에 인수를 전달하려면, 화살표 함수를 사용하거나 `v-on` 디렉티브의 인라인 표현식을 사용할 수 있습니다. ```html <template> <button @click="handleClick('Hello')">Click me</button> </template> <script> export default { methods: { handleClick(message) { alert(message); } } } </script> ``` 위의 예제에서 버튼을 클릭하면 "Hello"라는 메시지가 알림으로 표시됩니다. 4. 이벤트 <a href='https://sangseek.com/sangseeks/수식어/ko'>수식어</a> Vue.js는 이벤트 수식어를 제공하여 이벤트의 기본 동작을 제어할 수 있습니다. 예를 들어, `prevent`와 `stop` 수식어를 사용하여 이벤트의 기본 동작을 방지하거나 이벤트 전파를 중단할 수 있습니다. ```html <template> <form @submit.prevent="handleSubmit"> <button type="submit">Submit</button> </form> </template> <script> export default { methods: { handleSubmit() { alert('Form submitted!'); } } } </script> ``` 위의 예제에서 `@submit.prevent`는 폼 제출 시 페이지가 새로 고침되는 것을 방지합니다. 5. 커스텀 이벤트 Vue.js에서는 자식 컴포넌트가 부모 컴포넌트에 이벤트를 전달할 수 있습니다. 이를 통해 컴포넌트 간의 상호작용을 쉽게 처리할 수 있습니다. ```html <!-- 자식 컴포넌트 --> <template> <button @click="$emit('custom-event', 'Hello from child')">Click me</button> </template> <script> export default { name: 'ChildComponent' } </script> <!-- 부모 컴포넌트 --> <template> <ChildComponent @custom-event="handleCustomEvent" /> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, methods: { handleCustomEvent(message) { alert(message); } } } </script> ``` 위의 예제에서 자식 컴포넌트는 버튼 클릭 시 `custom-event`를 발생시키고, 부모 컴포넌트는 이를 수신하여 메시지를 알림으로 표시합니다. 6. 이벤트 버스 Vue.js에서는 이벤트 버스를 사용하여 비동기적으로 컴포넌트 간의 통신을 할 수 있습니다. 이벤트 버스는 Vue 인스턴스를 사용하여 구현할 수 있습니다. ```javascript // event-bus.js import Vue from 'vue'; export const EventBus = new Vue(); ``` 이벤트 버스를 사용하여 컴포넌트 간에 이벤트를 전파할 수 있습니다. ```html <!-- 컴포넌트 A --> <template> <button @click="sendMessage">Send Message</button> </template> <script> import { EventBus } from './event-bus.js'; export default { methods: { sendMessage() { EventBus.$emit('message-sent', 'Hello from Component A'); } } } </script> <!-- 컴포넌트 B --> <template> <div>Message: 이중 중괄호 열기 message 이중 중괄호 닫기</div> </template> <script> import { EventBus } from './event-bus.js'; export default { data() { return { message: '' }; }, created() { EventBus.$on('message-sent', (msg) => { this.message = msg; }); }, <a href='https://sangseek.com/sangseeks/beforeDestroy/ko'>beforeDestroy</a>() { EventBus.$off('message-sent'); } } </script> ``` 위의 예제에서 컴포넌트 A는 버튼 클릭 시 메시지를 이벤트 버스를 통해 전송하고, 컴포넌트 B는 이를 수신하여 화면에 표시합니다. 결론 Vue.js에서 이벤트 처리는 매우 직관적이며, 다양한 방법으로 구현할 수 있습니다. 기본적인 이벤트 처리부터 시작하여, 이벤트 수식어, 커스텀 이벤트, 이벤트 버스 등을 활용하여 복잡한 사용자 인터페이스를 구축할 수 있습니다. 이러한 기능들을 잘 활용하면 Vue.js 애플리케이션의 상호작용을 더욱 풍부하게 만들 수 있습니다.
작성자:
김준영 [비회원]
| 작성일자: 1년 전
2024-09-14 17:14:39
조회수: 138
| 댓글: 0
| 좋아요: 0
| 싫어요: 0
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.