Ваш компонент может быть примерно таким
<template>
<select v-if="type == 'select'">
<option v-for="item in items" value="item.value">{{ item.text }}</option>
</select>
<select v-else-if="type == 'multiple'" multiple>
<option v-for="item in items" value="item.value">{{ item.text }}</option>
</select>
<input v-else-if="type == 'image'" type="file" id="image" name="image" accept="image/png, image/jpeg">
</template>
Vue.component('question', {
template: '#question',
props: {
type: {
default: ''
},
items: {
type: Array,
default: [
{ value: 1, text: 'One' },
{ value: 2, text: 'Two' },
{ value: 3, text: 'Three' }
]
}
}
});
С этим вы должны быть в состоянии передать правильные prop , такие как 'select', 'multiple' или 'image', чтобы показать желаемый ввод.
<div id="app">
<question type='image'></question>
</div>
Вот скрипка , если вы хотите попробовать сами.