У меня есть три компонента (A, B и C), и мне нужно передать компонент B или C как свойство компонента A, и компонент B добавит этот компонент в свой шаблон, поэтому в этом случае я могу передать любой компонент.
Компонент A
<template>
<div>
<h1>header</h1>
{{ component }}
</div>
</template>
<script>
export default {
name: 'A',
props: {
component: {
required: true,
},
},
};
</script>
Компонент B
<template>
c
</template>
<script>
export default {
name: 'B',
};
</script>
Компонент C
<template>
<p>Hello world!</p>
</template>
<script>
export default {
name: 'B',
};
</script>
Итак, если я передам компонент B как свойство компонента A, результат должен быть:
<h1>header</h1>
<span>this is the content</span>
но если я передам компонент C как свойство, результат должен быть:
<h1>header</h1>
<p>Hello world!</p>
Я пытался создать свойство в компоненте A и передать его, но получил неопределенное:
<template>
<A :component="component"></A>
</template>
...
props: {
component: {
template: '<B></B>',
},
},
Кто-нибудь знает, как это сделать?
ОБНОВЛЕНИЕ:
Наконец-то я использовал слот vue.
https://vuejs.org/v2/guide/components-slots.html