У меня есть компонент Vue, который импортирует и регистрирует другие компоненты локально. Я хочу перебрать объект компонентов и отобразить их динамически. Я пытаюсь добиться этого следующим образом (внутри файла .vue):
<template>
<div v-for = "component in components" class = "component">
<component v-bind:is = "component"></component>
</div>
</template>
<script>
import CarouselDefault from './carousel/CarouselDefault'
import AlertError from './alerts/AlertError'
import AlertInfo from './alerts/AlertInfo'
import AlertSuccess from './alerts/AlertSuccess'
import AlertWarning from './alerts/AlertWarning'
export default {
name: 'App',
components: {
CarouselDefault,
AlertError,
AlertInfo,
AlertSuccess,
AlertWarning
}
}
</script>и я получаю это сообщение об ошибке:
Property or method "components" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Свойство компонентов недоступно в построителе шаблонов vue, вам необходимо определить вычисленное свойство или свойство данных. пример:
computed:{
components(){
return [
CarouselDefault,
AlertError,
AlertInfo,
AlertSuccess,
AlertWarning
];
}
}
или
data(){
return {
components:[
CarouselDefault,
AlertError,
AlertInfo,
AlertSuccess,
AlertWarning
]
}
}