Vue.js 를 배워보자/2. Vue.js 기본 개념

컴포넌트 props와 events

_Blue_Sky_ 2024. 10. 4. 18:49
728x90
728x90

Vue.js 컴포넌트의 핵심: props와 events 심층 분석

Vue.js는 컴포넌트 기반의 프레임워크로, 각 컴포넌트는 독립적인 기능을 수행하며, 효율적인 개발과 유지보수를 가능하게 합니다. 컴포넌트 간의 데이터 전달과 상호 작용은 props와 events를 통해 이루어지는데, 이 두 가지 개념은 Vue.js 컴포넌트 개발에서 가장 중요한 부분입니다.

728x90

props: 부모에서 자식으로 데이터 전달

  • 정의: props는 부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달하는 데 사용되는 특별한 속성입니다.
  • 단방향 데이터 흐름: props는 항상 부모에서 자식으로 데이터가 흐르는 단방향 바인딩을 따릅니다. 즉, 자식 컴포넌트에서 props 값을 직접 변경할 수 없습니다.
  • 사용법:
    • 부모 컴포넌트에서 자식 컴포넌트를 사용할 때, props로 전달할 데이터를 속성 형태로 지정합니다.
    • 자식 컴포넌트에서는 props 옵션을 통해 받을 props를 정의하고, template 내에서 이 값을 사용합니다.
<template>
  <child-component :message="greeting" />
</template>

<script>
export default {
  data() {
    return {
      greeting: 'Hello, world!'
    }
  }
}
</script>

<template>
  <p>{{ message }}</p>
</template>

<script>
export default {
  props: ['message']
}
</script>
 
  • props 유효성 검사:
    • type: props의 타입을 지정하여 오류를 방지합니다.
    • required: props가 필수인지 여부를 지정합니다.
    • validator: 커스텀 유효성 검사 함수를 정의합니다.
props: {
  message: {
    type: String,
    required: true,
    validator(value) {
      return value.length > 5
    }
  }
}
 

events: 자식에서 부모로 이벤트 전달

  • 정의: events는 자식 컴포넌트에서 부모 컴포넌트로 이벤트를 전달하여 상호 작용을 하는 데 사용됩니다.
  • 사용법:
    • 자식 컴포넌트에서 $emit 메서드를 사용하여 이벤트를 발생시키고, 이벤트 이름과 함께 데이터를 전달합니다.
    • 부모 컴포넌트에서는 자식 컴포넌트를 사용할 때, @이벤트명 형태로 이벤트 리스너를 등록하여 이벤트를 처리합니다.
<template>
  <button @click="$emit('increment')">증가</button>
</template>

<script>
export default {
  methods: {
    increment() {
      this.$emit('increment')
    }
  }
}
</script>

<template>
  <child-component @increment="handleIncrement" />
  <p>카운트: {{ count }}</p>
</template>

<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    handleIncrement() {
      this.count++
    }
  }
}
</script>
 

props와 events를 활용한 컴포넌트 통신

  • 부모-자식 간 데이터 흐름: props는 부모에서 자식으로 데이터를 전달하고, events는 자식에서 부모로 이벤트를 전달하여 양방향 통신을 구현합니다.
  • 컴포넌트 재사용성: props와 events를 효과적으로 활용하면 컴포넌트를 재사용하기 쉽고, 코드를 모듈화하여 관리하기 편리합니다.
  • 복잡한 애플리케이션 구축: 대규모 애플리케이션에서도 props와 events를 통해 컴포넌트 간의 관계를 명확하게 정의하고, 데이터 흐름을 관리할 수 있습니다.

추가적으로 알아두면 좋은 점

  • v-model: 양방향 데이터 바인딩을 간편하게 구현하기 위한 지름길입니다.
  • custom events: 자식 컴포넌트에서 정의한 이벤트를 사용하여 더욱 유연한 통신을 구현할 수 있습니다.
  • provide/inject: 깊은 중첩된 컴포넌트 간의 데이터 전달을 위한 방법입니다.

결론

Vue.js의 props와 events는 컴포넌트 간의 데이터 흐름을 관리하고, 복잡한 애플리케이션을 효율적으로 개발하는 데 필수적인 개념입니다. 이 두 가지 개념을 숙달하면 Vue.js 개발을 더욱 즐겁게 할 수 있을 것입니다.

 

728x90
728x90

'Vue.js 를 배워보자 > 2. Vue.js 기본 개념' 카테고리의 다른 글

라이프 사이클  (1) 2024.10.04
컴포넌트 슬롯  (0) 2024.10.04
컴포넌트 생성 및 사용  (0) 2024.10.04
데이터 감시자  (0) 2024.10.04
데이터 계산 속성  (0) 2024.10.04