<script setup>
import { onLoad, onPageScroll } from "@dcloudio/uni-app"
import { ref, getCurrentInstance } from "vue"
const { proxy } = getCurrentInstance()
// 页面生命周期
onLoad(async () => {
console.log("【进入 movie-onLoad】")
})
</script>
- 发布:2023-06-29 14:16
- 更新:2023-07-07 17:51
- 阅读:227
产品分类: uni小程序SDK
手机系统: Android
手机系统版本号: Android 11
手机厂商: 小米
手机机型: 红米7
页面类型: vue
SDK版本号: 3.8.7
示例代码:
操作步骤:
uni-app 写上面组合式API的代码 发行成wgt包 flutter 解压加载 使用
uni-app 写上面组合式API的代码 发行成wgt包 flutter 解压加载 使用
预期结果:
正常渲染
正常渲染
实际结果:
首次不渲染 onLoad里面的代码,非首次正常
首次不渲染 onLoad里面的代码,非首次正常
bug描述:
uni-app vu3 这组合式API写的代码 微信小程序、H5和APP都运行正常,发行成wgt包 给同事用,同事 flutter 解压加载使用后2种情况:
情况一:如附件图所示 编译器版本不同会有弹窗,但功能正常。
情况二:我们换了编译器版本相同的(3.7.11和最新的3.8.7,俩种都试过),不会有情况一的弹窗,但js代码里的生命周期函数代码不执行(静态模板能渲染),测试了,未进入生命周期函数。非首次是正常的。就首次进入会有这种问题
董路飞 (作者) - 搜索小程序麻丝和 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