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) |