<A v-if="x === 1">
<B v-else-if="x === 2">
...
computed: {
component() {
/*
* здесь возвращаете имя компонента, в зависимости от... это вам виднее;
* если действительно будет так, как показано в вопросе - натуральные числа
* соответствуют компонентам, то можно сложить имена компонентов в массив:
* return [ 'component-1', 'component-2', 'component-3' ][this.x - 1];
*/
},
},
<component :is="component" />