3***@qq.com
3***@qq.com
  • 发布:2025-07-31 16:10
  • 更新:2025-07-31 16:29
  • 阅读:38

【报Bug】hbuilder从4.29更新到后续版本,都会导致编译出来的抖音小程序生命周期触发顺序异常。

分类:uni-app

产品分类: uniapp/小程序/抖音

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: window10

HBuilderX类型: 正式

HBuilderX版本号: 4.75

第三方开发者工具版本号: v4.4.3

基础库版本号: 3.77.0.14

项目创建方式: HBuilderX

示例代码:

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

操作步骤:
  1. 创建一个项目
  2. 创建一个页面
  3. 创建子组件,并且抛出方法
  4. 在父组件onMounted调用这个方法,这个时候会提示couponList.value为Null

预期结果:

子组件onMounted的触发应该早于父组件

实际结果:

当前会提示couponList.value为null调用方法失败

bug描述:

我们在开发抖音小程序的过程中,发现一旦hbuilder更新到4.29以后的版本,业务组件的生命周期就变得不再可控。

2025-07-31 16:10 负责人:无 分享
已邀请:
DCloud_UNI_JBB

DCloud_UNI_JBB

您好,麻烦发下可复现demo

  • 3***@qq.com (作者)

    父组件:

    <template>

    <RefTest ref="testRef"></RefTest>

    </template>


    <script setup>

    import { ref, onMounted } from "vue"

    import RefTest from '@/components/common/RefTest.vue'


    const testRef = ref(null)  

    onMounted(() => {
    // 这个报错,正常这里子组件得加载完成
    testRef.value.testFuc()
    // 随便写一个延迟,这边可以执行成功
    // setTimeout(()=> {
    // testRef.value.testFuc()
    // }, 1000)
    })

    </script>


    子组件:

    <template>

    <div>6666</div>

    </template>


    <script setup>

    const testFuc = function () {

    console.log('测试函数')

    }

    defineExpose({

    testFuc: testFuc

    })

    </script>


    <style>

    </style>

    2025-07-31 17:16

要回复问题请先登录注册