props
- 상위 컴포넌트의 데이터를 하위 컴포넌트로 전달
<!-- 상위 컴포넌트 -->
<template>
<component_name data_name="data_value"/>
</template>
<!-- 하위 컴포넌트 -->
<script>
export default {
name: 'component_name',
props: {
data_name: String // 받아오는 데이터 타입
},
setup(props) {
console.log(props.data_name); // 출력 값: data_value
}
}
</script>
emit
- 다른 컴포넌트에게 이벤트를 전달하기 위해 사용할 수 있다. (하위 컴포넌트 → 상위 컴포넌트 데이터 전달)
- Composition API: context.emit(event_name, data_value)
- Vue 2: this.$emit(event_name, data_value)
<!-- 상위 컴포넌트 -->
<template>
<component_name @event_name="event_function"/>
</template>
<script>
export default {
setup() {
const event_function = (data_value) => {
console.log(data_value); // 출력 값: data_value
}
}
}
</script>
<!-- 하위 컴포넌트 -->
<script>
export default {
name: 'component_name',
setup(props, context) {
context.emit('event_name', 'data_value'); // 상위 컴포넌트로 데이터 보내기
}
}
</script>
번외
- props 값이 바뀌면 함수 실행
<!-- 상위 컴포넌트 -->
<template>
<component_name data_name="data_value"/>
</template>
<!-- 하위 컴포넌트 -->
<script>
import { watch } from '@vue/runtime-core'
export default {
name: 'component_name',
props: {
data_name: String // 받아오는 데이터 타입
},
setup(props) {
watch(() => props.data_name, (change_data, previous_data) => {
console.log(change_data); // 바뀐 데이터
console.log(previous_data); // 바뀌기 전 데이터
});
}
}
</script>
참고 링크 1: https://v3.ko.vuejs.org/guide/component-props.html
Props | Vue.js
Props 이 페이지는 여러분이 이미 컴포넌트 기초를 읽었다고 가정하고 쓴 내용입니다. 컴포넌트가 처음이라면 기초 문서를 먼저 읽으시기 바랍니다. Prop 타입 이제까지는 문자열 배열로 나열 된 p
v3.ko.vuejs.org
[Vue JS] props, emit 연습하기 - 유투브 클론코딩
vue는 기본적으로 v-model이라는 양방향 데이터 바인딩 디렉티브를 제공한다. 한 컴포넌트 내에서 사용자의 입력값을 컴포넌트의 데이터와 바인딩하기에는 좋은 디렉티브이지만, 데이터 흐름 추
velog.io
'Web > JavaScript' 카테고리의 다른 글
Vue.js - 쿠키 사용 (vue-cookies) (0) | 2021.09.15 |
---|---|
JavaScript - Class 작업 (className, classList) (0) | 2021.09.14 |
JavaScript - Prototype (0) | 2021.09.13 |
JavaScript - JSON String ↔ JSON Object (0) | 2021.09.11 |
JavaScript - Class (0) | 2021.09.11 |