董路飞
董路飞
  • 发布:2023-06-29 14:16
  • 更新:2023-07-07 17:51
  • 阅读:227

【报Bug】flutter 加载解压 uni小程序SDK的wgt包,首次不执行页面生命周期里onLoad的代码

分类:uni小程序sdk

产品分类: uni小程序SDK

手机系统: Android

手机系统版本号: Android 11

手机厂商: 小米

手机机型: 红米7

页面类型: vue

SDK版本号: 3.8.7

示例代码:
<script setup>  
    import { onLoad, onPageScroll } from "@dcloudio/uni-app"  
    import { ref, getCurrentInstance } from "vue"  

    const { proxy } = getCurrentInstance()  

       // 页面生命周期  
    onLoad(async () => {  
     console.log("【进入 movie-onLoad】")  
       })  
</script>

操作步骤:

uni-app 写上面组合式API的代码 发行成wgt包 flutter 解压加载 使用

预期结果:

正常渲染

实际结果:

首次不渲染 onLoad里面的代码,非首次正常

bug描述:

uni-app vu3 这组合式API写的代码 微信小程序、H5和APP都运行正常,发行成wgt包 给同事用,同事 flutter 解压加载使用后2种情况:

情况一:如附件图所示 编译器版本不同会有弹窗,但功能正常。
情况二:我们换了编译器版本相同的(3.7.11和最新的3.8.7,俩种都试过),不会有情况一的弹窗,但js代码里的生命周期函数代码不执行(静态模板能渲染),测试了,未进入生命周期函数。非首次是正常的。就首次进入会有这种问题

2023-06-29 14:16 负责人:无 分享
已邀请:
董路飞

董路飞 (作者) - 搜索小程序麻丝和 App 麻丝

【又测试了,不是生命周期问题,是进去太快了就不执行那些js代码】
我把生命周期里的代码放到外面,直接写在<script setup> 下,首次也不行

<script setup>  

const init=async()=>{  
  // 之前生命周期里的代码  
}  

init()  
</script>

但是这样首次就执行了

<script setup>  

const init=async()=>{  
  // 之前生命周期里的代码  
}  

    setTimeout(() => {  
        uni.showModal({  
            title: "进入计时器"  
        })  
        init()  
    }, 6000)  
</script>

延迟6秒(随便写的延迟时间)再执行之前生命周期里的脚本代码(发请求存响应式数据,渲染模板),首次就加载成功了

董路飞

董路飞 (作者) - 搜索小程序麻丝和 App 麻丝

定时器0秒好像不行

   setTimeout(() => {    
        uni.showModal({    
            title: "进入计时器"    
        })    
        init()    
    })

500毫秒正常

   setTimeout(() => {    
        uni.showModal({    
            title: "进入计时器"    
        })    
        init()    
    }, 500)
董路飞

董路飞 (作者) - 搜索小程序麻丝和 App 麻丝

【得出新结论:HBX 3.8.7, vue3 <script setup>写法, 编译到 APP 端 未触发 onLoad 生命周期函数】


    import { onLoad, onPageScroll } from "@dcloudio/uni-app"  

    // 页面生命周期  
    onLoad(() => {  
        console.log("【进入 movie-onLoad】")  

    })

也不对,重写开个项目 编译APP跑 触发了 onLoad

董路飞

董路飞 (作者) - 搜索小程序麻丝和 App 麻丝

上面问题取消。

新问题:iOS SDK 版本,为什么不能和 Android SDK 一样的版本更新,和 HbuilderX 版本不一致,就会有上面图片里的弹窗

iOS SDK 版本 3.8.4 https://nativesupport.dcloud.net.cn/UniMPDocs/SDKDownload/ios.html
Android SDK 版本 3.8.7 https://nativesupport.dcloud.net.cn/UniMPDocs/SDKDownload/android.html

要回复问题请先登录注册