DefineProps

Vue 3 setup Composition 으로 넘어오면서 Vue 2의 props 는 DefineProps로 변경되었다.

기본 형태

// Sample.vue

<script setup>

    defineProps({
        title: {
            Type: String,
            required: true
        },
        order: Number,
        category: String
    });

</script>

위와 같은 형태로 사용할 수 있다.

저렇게 지정하고 나면 Parent Component에서 값을 넣어줄 수 있다.

// Sample_Parent.vue

<template>
    ...
    <Sample title="Sample Title" order=10 />
    ...
</template>

defineProps에서 지정된 변수는 template에서 중괄호를 사용하여 값을 사용할 수 있다.

// Sample.vue

<template>
    ...
    <h1>  </h1>
    <h2>  </h1>
    ...
</template>

다른 한 편, Script 부분에서도 사용할 수 있다.
Parent에서 Child로 값을 넘겨 axios body나 function 변수 값으로 넣고 싶었은데 이 활용법을 몰라서 많이 헤메였던 기억이 있다.

defineProps를 하나의 변수로 받은 다음 vue의 toRefs 함수로 변환하면 script에서 각 값을 사용할 수 있다. toRefs라는 변수명답게 각 변수는 ref 변수이다.

// Sample.vue

<script>
    const props = defineProps({
        title: {
            Type: String,
            required: true
        },
        order: Number,
        category: String
    });

    const { title, order, category } = toRefs(props);
</script>

Written on July 30, 2022