상위에서 하위로는 데이터를 내려준다, 프롭스props 전달
하위에서 상위로는 이벤트를 올려준다, 이벤트 발생(이벤트 버블링)
<app-header v-bind:propsdata="message"></app-header>
프롭스 이름은 하위 컴포넌트에서 설정한다.
const appHeader = { template: '<h1>header</h1>', props: ['propsdata'] }
바디 태그 내 전체 코드
<body>
<div id="app">
<!-- <app-header v-bind:프롭스 속성 이름="'상위 컴포넌트의 데이터 이름"></app-header> -->
<app-header v-bind:propsdata="message"></app-header>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
const appHeader = {
template: '<h1>header</h1>',
props: ['propsdata']
}
//app-header라는 컴포넌트에 message라는 데이터를 props로 내려줌
new Vue({
el: '#app',
components: {
'app-header': appHeader
},
data: {
message: 'hi'
},
})
</script>
</body>
const appHeader = {
template: '<button v-on:click="passEvent">Click me</button>',
methods: {
passEvent: function(){
this.$emit('pass')
}
}
}
app-header(하위 컴포넌트)에서 발생한 이벤트를 Root 인스턴스(상위 컴포넌트)로 전달하기
<app-header v-on: 하위 컴포넌트에서 발생한 이벤트 이름="상위 컴포넌트의 메서드 이름"></app-header>
<app-header v-on: pass="logText"></app-header>
<body>
<div id="app">
<!-- <app-header v-on: 하위 컴포넌트에서 발생한 이벤트 이름="상위 컴포넌트의 메서드 이름"></app-header> -->
<app-header v-on: pass="logText"></app-header>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
const appHeader = {
template: '<button v-on:click="passEvent">Click me</button>',
methods: {
passEvent: function(){
this.$emit('pass')
}
}
}
new Vue({
el: '#app',
components: {
'app-header': appHeader,
},
methods: {
logText: function(){
console.log('hi');
}
},
})
</script>
</body>