Vue.js 를 배워보자/3. 컴포넌트 심화

커스텀 이벤트

_Blue_Sky_ 2024. 10. 5. 09:38
728x90
728x90

Vue.js 커스텀 이벤트: 자세하고 깊이 있는 가이드

 

Vue.js는 컴포넌트 기반의 프레임워크로, 컴포넌트 간의 데이터 전달과 상호 작용을 위한 강력한 기능을 제공합니다. 그 중에서도 커스텀 이벤트는 자식 컴포넌트에서 부모 컴포넌트로 데이터를 전달하거나 특정 이벤트를 발생시켜 상위 계층의 상태를 변경하는 데 매우 유용하게 활용됩니다. 이 글에서는 Vue.js 커스텀 이벤트에 대한 개념, 사용 방법, 실제 예시를 통해 자세히 알아보겠습니다.

커스텀 이벤트란 무엇인가?

Vue.js에서 커스텀 이벤트는 개발자가 직접 정의하는 이벤트입니다. 기본적으로 제공되는 클릭, 마우스오버와 같은 네이티브 이벤트 외에, 컴포넌트 내부에서 특정 작업이 완료되었거나 특정 상태가 변경되었을 때 발생시킬 수 있는 이벤트를 의미합니다. 이를 통해 컴포넌트 간의 의존성을 줄이고, 더욱 유연하고 재사용 가능한 컴포넌트를 만들 수 있습니다.

728x90

커스텀 이벤트 사용 방법

1. 이벤트 정의

  • emits 옵션: 컴포넌트에서 발생시킬 수 있는 커스텀 이벤트를 미리 정의합니다.
<script>
export default {
  emits: ['my-event']
}
</script>
 

2. 이벤트 발생

  • $emit 메서드: 컴포넌트 내부에서 이벤트를 발생시키고, 필요한 데이터를 함께 전달합니다.
<template>
  <button @click="handleClick">클릭</button>
</template>

<script>
export default {
  methods: {
    handleClick() {
      this.$emit('my-event', 'Hello from child component!')
    }
  }
}
</script>
 

3. 이벤트 수신

  • v-on 디렉티브: 부모 컴포넌트에서 자식 컴포넌트가 발생시킨 이벤트를 수신하고 처리합니다.
<template>
  <child-component @my-event="handleEvent"></child-component>
</template>

<script>
export default {
  methods: {
    handleEvent(data) {
      console.log(data) // 'Hello from child component!'
    }
  }
}
</script>
 

실제 예시: 모달 컴포넌트

  • 자식 컴포넌트 (Modal.vue):
<template>
  <div class="modal">
    <slot></slot>
    <button @click="$emit('close')">닫기</button>
  </div>
</template>

<script>
export default {
  emits: ['close']
}
</script>
 
  • 부모 컴포넌트:
<template>
  <modal @close="closeModal">
    <p>모달 내용</p>
  </modal>
</template>

<script>
export default {
  methods: {
    closeModal() {
      this.showModal = false
    }
  }
}
</script>
 

위 예시에서 자식 컴포넌트인 Modal은 'close' 이벤트를 발생시키고, 부모 컴포넌트는 이벤트를 수신하여 모달을 닫는 로직을 수행합니다.

커스텀 이벤트 활용 시 고려 사항

  • 명확한 이벤트 이름: 이벤트 이름은 컴포넌트의 역할과 발생하는 상황을 명확하게 나타내도록 지어야 합니다.
  • 데이터 전달: 이벤트 발생 시 필요한 데이터를 함께 전달하여 부모 컴포넌트에서 다양한 처리를 할 수 있도록 합니다.
  • 이벤트 버블링: 이벤트 버블링을 활용하여 상위 계층으로 이벤트를 전파할 수 있습니다.
  • v-model: v-model을 사용하여 양방향 데이터 바인딩을 간편하게 구현할 수 있습니다.

결론

Vue.js 커스텀 이벤트는 컴포넌트 간의 유기적인 상호 작용을 가능하게 하여 더욱 복잡하고 유연한 애플리케이션을 개발할 수 있도록 돕습니다. 이 글을 통해 커스텀 이벤트의 개념과 사용 방법을 익히고, 실제 프로젝트에 적용하여 더욱 효율적인 Vue.js 개발을 해보시기 바랍니다.

추가적으로 알아보면 좋은 내용

  • Vue.js 공식 문서: 커스텀 이벤트에 대한 더 자세한 내용과 예시를 확인할 수 있습니다.
  • v-model 구현: 커스텀 이벤트를 활용하여 v-model과 같은 양방향 데이터 바인딩을 구현하는 방법을 알아보세요.
  • 이벤트 버블링: 이벤트 버블링을 활용하여 상위 계층으로 이벤트를 전파하는 방법을 익혀보세요.

 

728x90
728x90

'Vue.js 를 배워보자 > 3. 컴포넌트 심화' 카테고리의 다른 글

Mixin  (0) 2024.10.05
컴포넌트 조립  (0) 2024.10.05
단일 파일 컴포넌트 (SFC)  (0) 2024.10.05