defineProps와 defineEmits는 script setup 내에서만 사용할 수 있으며
import할 필요 없이 script setup이 처리될 때 컴파일 된다.
부모 컴포넌트
<template>
<div>
<p>나는 부모 컴포넌트</p>
<ChildrenComponent @children-message="childrenMessage" />
</div>
</template>
<script setup>
import ChildrenComponent from "./ChildrenComponent.vue";
const childrenMessage = (data) => {
console.log("자식이 준 메세지", data); // 부모 컴포넌트 Hi
};
</script>
자식 컴포넌트
<template>
<div>
<p>나는 자식 컴포넌트</p>
<button @click="messageRelay">누르면 부모 컴포넌트에게 메세지 전달</button>
</div>
</template>
<script setup>
import { defineEmits } from "vue";
const emit = defineEmits(["childrenMessage"]);
const messageRelay = () => {
emit("children-message", "부모 컴포넌트 Hi")
}
</script>