Так вот в чем дело. У меня есть Cat
, Dog
и Horse
, которые реализуют интерфейс Animal
. Для каждого из них у меня есть DogComponent
, CatComponent
и HorseComponent
.
Вопрос:
Как создать компонент AnimalComponent
, который принимает любой Animal
, но отображает DogComponent
в случае, если это Dog
, без использования switch-case
или набора v-if
в <template>
?
Пожалуйста, предположим, что просто отобразить разные imageUrl
и title
недостаточно.
Просто используйте динамический компонент Vue :)
Этот специальный компонент отображает компонент с именем, указанным в свойстве is
.
<template>
<component v-for = "animal in animals" :is = "`${animal.type}-component`"/>
</template>
<script>
// vue syntax omitted for simplicity
animals: [
{ type: 'dog' },
{ type: 'cat' },
]
</script>