Vue всегда рендерит последний зарегистрированный компонент и только его.Даже если я его вообще не использую.
//main.ts
import Vue from 'vue';
Vue.component('component-one', require('./components/ComponentOne.vue'));
Vue.component('component-two', require('./components/ComponentTwo.vue'));
const app = new Vue({
el: '#app1',
vuetify,
})
//ComponentOne
<template>
<h2>Component One</h2>
</template>
<script lang="ts">
import Vue from 'vue'
export default class ComponentOne extends Vue{
}
</script>
//ComponentTwo
<template>
<h2>Component Two</h2>
</template>
<script lang="ts">
import Vue from 'vue';
export default class ComponentTwo extends Vue{
}
</script>
<body>
<div id="app1">
<!-- Whatever I put in here, it won't matter -->
<!-- I will always get only the content of the last registered component -->
<h2>Title</h2>
<component-one></component-one>
<component-two></component-two>
</div>
<script src="/js/app.js"></script>
</body>
Я получаю содержимое ComponentTwo, отображаемое на странице. Скриншот страницы
Если я удаляю строки, которые регистрируют мои компоненты, я могу использовать библиотеки компонентов, такие как Vuetify, внутри тега div, но не могу, если не сделаю этого.Я ожидал, что смогу использовать мои компоненты и любые другие так, как мне нужно, внутри тега div.
Редактировать: Спасибо, ребята, за ответы.Есть ли способ использовать эти компоненты внутри элемента HTML, как в шаблоне?Вот так:
<!-- This could be a index.html or, in my case, a Laravel Blade view
<body>
<div id="app1">
<component-one></component-one>
<component-two></component-two>
</div>
<script src="/js/app.js"></script>
</body>
Компоненты Vuetify работают нормально, если я не регистрирую какой-либо пользовательский компонент.