Vue 筆記 - 如何使用 props 傳入 multipule value

Props 的傳遞

在Vue當中Props的傳遞是家常便飯,例如以下的資料若要傳遞至Child component時:

const age: number = 134;
const year number = 2153;
const today: Date = new Date();

需要在Parent component及Child component中如此地寫道:

// Parent component
<template>
...
<MyAwesomeComponent :age="age" :year='year' :date='today' />
...
</template>

// Child component
<template>
    <span>{{ age }}</span>
    <span>{{ year }}</span>
    <span>{{ date }}</span>
</template>
<script lang="ts">
    export default defineComponent({
        props: [age, year, date],
        setup(props){
           const { age, year, date } = toRefs(props);

           return { age, year, date };
        }
    });
</script>

如果不想這麼麻煩的Props傳入,想要把Prop一次打包傳入的話,就可以用下面的方法來操作。

Prop打包傳入

// Parent component
<template>
...
<MyAwesomeComponent v-bind="groupedProps" />
...
</template>

<script lang="ts">
    export interface IgroupedProps {
        age: number;
        year: number;
        today: Date;
    }
    export default defineComponent({
        setup(){
           const groupedProps = {age:134, year:2153, today: new Date()};

           return { groupedProps };
        }
    });
</script>
// Child component
<template>
    <span>{{ groupedProps.age }}</span>
    <span>{{ newage }}</span>
    <span>{{ groupedProps.year }}</span>
    <span>{{ groupedProps.today }}</span>
</template>

<script lang="ts">
    import { IgroupedProps } from 'Parent component'

    export default defineComponent({
        props: {
            groupedProps: { type: Object as PropType<IgroupedProps> },
        },
        setup(props){
           // 若要在setup內進行操作,則可使用解構方式取值
           // 若只需要直接在template內顯示,或進行簡單操作,則可直接使用props
           const { age, year, today } = toRefs(props);
           const newage =  age + 1;

           return { age, newage, year, today };
        }
    });
</script>