在vue3中报这个错误 如何修复Component inside <Transition> renders non-element root node that

195 阅读1分钟

这个错误是因为在 Vue 3 中,<Transition> 组件中的根节点必须是一个 HTML 元素,而不能是一个虚拟节点(例如注释或文本节点)。要修复这个问题,确保你在 <Transition> 组件内部的根节点是一个有效的 HTML 元素。

以下是一些可能的解决方案:

  1. 检查 Detail 组件的根节点: 确保 Detail 组件的根节点是一个 HTML 元素。例如:

    <template>
      <div>
        <!-- 你的组件内容 -->
      </div>
    </template>
    
  2. Detail 组件中包裹一个 HTML 元素: 如果你的 Detail 组件返回的根节点不是 HTML 元素,可以包裹一个 <div> 或其他 HTML 元素。例如:

    <template>
      <div>
        <SomeOtherComponent />
      </div>
    </template>
    
  3. 检查 BaseTransitionTransition 组件: 确保这些组件的子元素都是有效的 HTML 元素,而不是注释或文本节点。

以下是一个示例,展示如何正确使用 <Transition> 组件:

<template>
  <Transition name="fade" mode="out-in">
    <div>
        <!-- 你的组件内容 -->
        Hello World!
    </div>
  </Transition>
</template>

<script>
export default {
  data() {
    return {
      show: true,
    };
  },
};
</script>