Slot에 이어 Special Elements로 분류되는 Component에 대해 알아보자.
메타 컴포넌트인 component는 컴포넌트나 엘리먼트의 동적 렌더링을 위해 사용한다. is 속성을 props로 전달받으며, props의 타입은 string으로 HTML 태그명 혹은 커스텀 컴포넌트명이 될 수 있다.
// Layout.vue
<template>
<component :is="layout">
<slot></slot>
</component>/>
</template>
<script>
import Default from '@/views/DefaultLayout'
import Clear from '@/views/ClearLayout'
import { useRoute } from 'vue-router'
import { computed } from 'vue'
export default {
components: {
Clear,
Default,
},
setup() {
const route = useRoute()
const layout = computed(() => {
const layoutList = {
Default: 'Default',
Clear: 'Clear',
}
return layoutList[route.meta.layout] ?? 'Default'
})
return {
layout,
}
},
}
</script>