父组件在加载完成的生命周期里调用子组件方法,在4.29以后的版本全部报错。
但是最早使4.29及以前的版本,均可以确保生命周期和加载顺序符合预期
onMounted(() => {
couponList.value.initList()
nearbyArea.value.init()
experienceCoupon.value.init()
})

- 发布:2025-07-31 16:10
- 更新:2025-07-31 16:29
- 阅读:38
产品分类: uniapp/小程序/抖音
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: window10
HBuilderX类型: 正式
HBuilderX版本号: 4.75
第三方开发者工具版本号: v4.4.3
基础库版本号: 3.77.0.14
项目创建方式: HBuilderX
示例代码:
操作步骤:
- 创建一个项目
- 创建一个页面
- 创建子组件,并且抛出方法
- 在父组件onMounted调用这个方法,这个时候会提示couponList.value为Null
- 创建一个项目
- 创建一个页面
- 创建子组件,并且抛出方法
- 在父组件onMounted调用这个方法,这个时候会提示couponList.value为Null
预期结果:
子组件onMounted的触发应该早于父组件
子组件onMounted的触发应该早于父组件
实际结果:
当前会提示couponList.value为null调用方法失败
当前会提示couponList.value为null调用方法失败
bug描述:
我们在开发抖音小程序的过程中,发现一旦hbuilder更新到4.29以后的版本,业务组件的生命周期就变得不再可控。
3***@qq.com (作者)
父组件:
<template>
<RefTest ref="testRef"></RefTest>
</template>
<script setup>
import { ref, onMounted } from "vue"
import RefTest from '@/components/common/RefTest.vue'
</script>
子组件:
<template>
<div>6666</div>
</template>
<script setup>
const testFuc = function () {
console.log('测试函数')
}
defineExpose({
testFuc: testFuc
})
</script>
<style>
</style>
2025-07-31 17:16