๐ Reference
๐ย Chapter
<script setup>
๊ตฌ๋ฌธ์์ ์ปดํฌ๋ํธ์ ์ธํฐํ์ด์ค(Props์ Emits)๋ฅผ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ปดํ์ผ๋ฌ ๋งคํฌ๋ก(Compiler Macros)์ด๋ค.<script setup>
์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ ๋น๋ ์๊ฐ ์ ์ฉ ์ ์ธ์ด๋ค.defineEmits
๋ ์ปดํฌ๋ํธ๊ฐ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก ๋ฐ์์ํฌ ์ ์๋ ์ด๋ฒคํธ(Emits)๋ฅผ ์ ์ธํ๋ค.<script setup>
// ๋ฐํ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํ ๋ฐฐ์ด ๋๋ ๊ฐ์ฒด ์ ๋ฌ (JavaScript ๋ฐฉ์)
const emit = defineEmits(['update', 'submit']);
// ์ด๋ฒคํธ ๋ฐ์ ์ emit ํจ์ ์ฌ์ฉ
const handleClick = () => {
// 'submit' ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๊ณ ์ธ์(ํ์ด๋ก๋)๋ฅผ ์ ๋ฌ
emit('submit', { data: 'payload' });
};
</script>
<script setup lang="ts">
// ๐ก defineEmits ๋ค์ ์ ๋ค๋ฆญ์ผ๋ก ์ด๋ฒคํธ ์๊ทธ๋์ฒ๋ฅผ ์ ์
const emit = defineEmits<{
// ์ด๋ฒคํธ ์ด๋ฆ: (์ธ์1์ ํ์
, ์ธ์2์ ํ์
, ...)
(e: 'update', value: string): void;
(e: 'submit', payload: { data: string }): void;
}>();
// emit ํจ์๋ฅผ ํธ์ถํ ๋ TypeScript๊ฐ ์ธ์ ํ์
์ ๊ฒ์ฌํด ์ค๋๋ค.
emit('update', 'new value');
</script>