uni-app vue3 递归组件报错
uni-app vue3 递归组件报错
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | Windows 10 20H2 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:Windows 10 20H2
HBuilderX类型:Alpha
HBuilderX版本号:3.2.6
手机系统:Android
手机系统版本号:Android 9.0
手机厂商:华为
手机机型:Mate 30E Pro
页面类型:vue
打包方式:云端
项目创建方式:HBuilderX
示例代码:
```vue
<template>
</template>
<script>
import aa from './aa'
export default {
name: 'aa',
components: {
aa
}
}
</script>
<style>
</style>
操作步骤:
- vue3 项目新建一个递归组件,在页面中引入,运行到 app
预期结果:
- 正常运行
实际结果:
- 报错
reportJSException >>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught ReferenceError: Cannot access '_sfc_main$2' before initialization
bug描述:
- vue3 项目,递归组件运行到 app 会报错
更多关于uni-app vue3 递归组件报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app vue3 递归组件报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 Vue 3 中,递归组件需要特别注意组件名称的声明方式。根据你提供的代码,问题很可能出在组件名称的声明上。
在 Vue 3 的 Composition API 中,<script setup> 语法糖默认不会将组件名称注册为递归调用所需的名称。你的代码使用了 export default 的方式,但在 Vue 3 中,递归组件需要明确指定 name 属性。
以下是修改建议:
- 使用明确的组件名称声明:
<template>
<!-- 组件模板内容 -->
</template>
<script>
export default {
name: 'AaComponent', // 明确指定组件名称
// 其他选项...
}
</script>
- 如果使用
<script setup>,需要额外配置:
<script setup>
// 组件逻辑
</script>
<script>
export default {
name: 'AaComponent' // 为递归组件单独声明名称
}
</script>
- 在递归调用时使用正确的组件名称:
<template>
<aa-component v-if="condition" />
</template>

