Переход Vue 3 с динамическим компонентом не позволяет использовать несколько корневых объектов в дочернем компоненте

#javascript #vue.js #vue-router #vuejs3

Вопрос:

Я использую компонент Vue в качестве «макета», чтобы иметь возможность загружать динамический контент с помощью представления маршрутизатора со слотом. Этот компонент окружен компонентом перехода, обеспечивающим плавные переходы между страницами. Это прекрасно работает:

 <template>
  <AppLayout>
    <router-view v-slot="{ Component }">
      <transition name="slide" mode="out-in"> <component :is="Component" /> </transition>
    </router-view>
  </AppLayout>
</template>
 

Компонент, который необходимо отобразить, указан в конфигурации маршрутизатора с использованием свойства компонента:

 export const routes = [
  {
    path: "/",
    component: Intro,
    meta: {
      layout: "AppLayoutDefault",
    },
  }
]
 

Это работает нормально, однако, когда я использую несколько корневых тегов в компоненте, это нарушается, т. Е.:

 <template>
  <ComponentA />
  <ComponentB />
</template>

<script>
export default defineComponent({
  name: "Intro",
  components: {
      ...
  }
});
</script>
 

Показана ошибка: [Предупреждение Vue]: Компонент внутри отображает неэлементный корневой узел, который не может быть анимирован.
И новая страница не отображается.

Я понимаю, что могу исправить переход, окружающий 2 компонента в одном окружающем div, однако я хотел бы точно понять, почему текущая настройка не работает, и надеюсь на лучшее решение.

Комментарии:

1. вы уверены, что используете vue 3, а не 2 ?

2. @Jimmar да, я уверен, что использую vue 3. Я думаю, что элементу перехода разрешено иметь только один корневой элемент, но я не могу найти его в официальных документах.