728x90
๋ฐ์ํ
Props
์ค๋ช
๐ ๋ถ๋ชจComponent ๊ฐ(์ ์ก)์ ์์Component(์ถ๋ ฅ)์๊ฒ ์ ๋ฌํด์ค๋ ์ฌ์ฉ
์ฌ์ฉ๋ฒ
- defineProps()์ ์ ๋ฌํ๋ ์ธ์๋ props ์ต์ ์ ์ ๊ณตํ๋ ๊ฐ(์ฝ๊ธฐ ์ ์ฉ)๊ณผ ๋์ผ
- ๋ ์ ์ธ ์คํ์ผ์ ๋์ผํ props ์ต์ ์ ์ฌ์ฉ
- ๋ถ๋ชจ์์ ์์์๊ฒ ๋ฐ์ดํฐ ๋๊ธฐ๊ธฐ
<script setup>
let testData = 'ํ์์ปดํฌ๋ํธ๋ก ๋ณด๋ผ ๋ฐ์ดํฐ';
</script>
<template>
<TestBlock :data="testData"> </TestBlock> <!--๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ -->
</template>
- ์์์์ ๋ถ๋ชจ ๋ฐ์ดํฐ ์ถ๋ ฅํ๊ธฐ
<script setup>
import { defineProps } from 'vue';
const props = defineProps({
data: String
});
</script>
<template>
<h3> {{ props.data }} </h3>
</template>
Emits
์ค๋ช
๐ ์์Component ๊ฐ(์ ์ก)์ ๋ถ๋ชจComponent(์ถ๋ ฅ)์๊ฒ ์ ๋ฌํด์ค๋ ์ฌ์ฉ
์ฌ์ฉ๋ฒ
- defineEmits()์ ์ ๋ฌํ๋ ์ธ์๋ emit ์ต์ ์ ์ ๊ณตํ๋ ๊ฐ(์ฝ๊ธฐ ์ ์ฉ)๊ณผ ๋์ผ
- ๋ ์ ์ธ ์คํ์ผ์ ๋์ผํ emits ์ต์ ์ ์ฌ์ฉ
- ์์์์ ๋ถ๋ชจ์๊ฒ ๋ฐ์ดํฐ ๋๊ธฐ๊ธฐ
<script setup>
// ํ์์ปดํฌ๋ํธ์์ ์์์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ ๋ณด๋ด๊ธฐ
const test = 'ํ
์คํธ ๋ฐ์ดํฐ์!!';
const emit = defineEmits(['child']);
const testBtn = () =>{
emit('child', test); // ์ ์ก
}
</script>
<template>
<button @click="testBtn"> </button> <!-- ํจ์ ํธ์ถ ๋ฒํผ -->
</template>
- ๋ถ๋ชจ์์ ์์ ๋ฐ์ดํฐ ์ถ๋ ฅํ๊ธฐ
<script setup>
const parents = (data) => {
// ์คํํ ๋ด์ฉ ์
๋ ฅ
console.log(data);
}
</script>
<template>
<!-- child๋ก ๋ฐ์ดํฐ๊ฐ ๋์ด์ค๋ฉด parents ํจ์ ์คํ -->
<TestBlock @child="parents"> </TestBlock>
</template>
๋ฐ์ํ
'์ธ์ด > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
pinia ์ค์น ๋ฐ ์ ํ (0) | 2024.03.29 |
---|---|
๊ฐ์์ (0) | 2024.03.29 |
v-slot (0) | 2024.03.29 |
v-on @ ํํ์ truthy ๊ธฐ๋ฐ ์ด๋ฒคํธ ๊ด๋ฆฌ ์์ฑ (0) | 2024.03.29 |
v-bind : ๋ฐ์ดํฐ ์ฐ๊ฒฐ - ๋ฐ์ธ๋ฉ ์์ฑ (0) | 2024.03.29 |