props 사용법
props는 상위 컴포넌트의 데이터를 하위컴포넌트로 전달할 때 사용합니다.
props로 받을 때에는 camel 표기법을 사용해선 안됩니다. 대신, kebab 표기법(xx-xx)을 사용합니다.
<컴포넌트 v-bind:하위컴포넌트="상위컴포넌트 data요소"></컴포넌트>
emit 사용법
emit을 사용할 때, 이벤트 이름이나 메소드 이름도 props와 마찬가지로 camel 표기법을 사용해선 안됩니다.
대신, kebab 표기법(xx-xx)을 사용합니다.
공식 문서에 따르면, 다음과 같이 나와있습니다.
컴포넌트 및 props와는 다르게 이벤트 이름은 자바스크립트 변수나 속성의 이름으로 사용되는 경우가 없으며, 따라서 camelCase나 PascalCase를 사용할 필요가 없습니다. 또한, (HTML의 대소문자 구분을 위해) DOM 템플릿의 v-on 이벤트리스너는 항상 자동으로 소문자 변환되기 때문에 v-on:myEvent 는 자동으로 v-on:myevent로 변환됩니다. – 즉, myEvent 이벤트를 들을 수 없습니다.
이러한 이유 때문에, 이벤트 이름에는 kebab-case를 사용하는것이 권장됩니다.
<컴포넌트 v-on:하위컴포넌트에 이벤트="상위컴포넌트 methods요소"></컴포넌트>
emit은 하위컴포넌트의 동작으로 상위컴포넌트의 메서드를 실행시킬 때 사용합니다.
아래의 예시는 하위컴포넌트의 데이터를 함께 emit으로 상위 컴포넌트에 전달하는 동작을 하는 코드를 작성해 보았습니다.
상위컴포넌트
하위 컴포넌트로부터 emit되는 메서드 명은 kebab-case로 작성해야 합니다.
물론, methods는 camelCase로 작성합니다.
<template>
<하위컴포넌트 @check-it="checkIt"></하위컴포넌트>
</template>
<script>
import '하위컴포넌트' from './하위컴포넌트.vue'
export default {
components : {
하위컴포넌트
},
methods : {
checkIt : function (text) {
alert(text);
},
}
}
</script>
하위컴포넌트
this.$emit()안에 들어갈 메소드 이름은 camelCase가 아닌 kebab-case로 작성해야 합니다.
물론, methods는 camelCase로 작성합니다.
<template>
<input type="button" @onclick="checkIt()"></상위컴포넌트>
</template>
<script>
export default {
methods : {
checkIt : function () {
let text = '상위컴포넌트로 전달할 데이터'
this.$emit(check-it, text)
},
}
}
</script>
결국에는, props나 emit을 사용하는 변수이름이나 이벤트 이름은 kebab-case를 사용해야 합니다.
'Vue.js' 카테고리의 다른 글
spa 새로고침 not found (0) | 2021.03.04 |
---|---|
[Vue.js] 2- vue-cli 프로젝트 생성하기 (0) | 2021.01.22 |
Vue에서 $nextTick이란 (0) | 2020.12.22 |
[Vue.js] mixin이란 (0) | 2020.12.22 |
[Vue 실전편]props의 데이터 변화 감지를 위한 watch 사용법 (0) | 2020.12.19 |
댓글