Vue3에서
<script setup>
구문을 사용할 때, 컴포넌트 props를 정의하는 방식이 완전히 달라졌습니다.
이 글에서는 Vue3의defineProps
와withDefaults
사용법을 예제와 함께 설명하고, Vue2 방식과의 차이점도 짚어보겠습니다.
Vue2에서는 props를 props
옵션으로 정의하고, 객체 형태로 기본값과 타입을 지정
default
: 기본값 지정required
: false: 생략 가능 (기본이 false)export default {
props: {
title: {
type: String,
required: false,
default: '상품 이미지'
},
itemName: String,
itemCode: String
}
}
<script Setup>
에서의 Props 정의<script setup>
const props = defineProps<{
title?: string;
itemName?: string;
itemImageList?: any[];
itemCode?: string;
}>();
</script>
withDefaults
는 타입 기반 defineProps
에만 사용 가능<script setup>
export interface Props {
title?: string;
itemName: string;
itemImageList: Array<any>;
itemCode: string;
}
let props = withDefaults(defineProps<Props>(), {
title: "상품 이미지"
});
</script>
<script setup>
에서 무시됨!// default 속성은 무시됨
const props = defineProps({
title: {
type: String,
default: '상품 이미지'
}
});
항목 | Vue 2 (Options API) | Vue 3 (<script setup> ) |
---|---|---|
props 선언 | props: { ... } | defineProps 사용 |
기본값 지정 | default: 'value' | withDefaults() 사용 |
타입 지정 | type: String 등 | TypeScript 기반 정의 권장 |
작동 시점 | 런타임 | 컴파일 타임 매크로 (defineProps ) |