uni-app 支付宝小程序tab第一个页面onShow无效

uni-app 支付宝小程序tab第一个页面onShow无效

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

操作步骤:

<template>
<view>
我是门店列表
</view>
</template>  

<script>
export default {
created(){
console.log(my.SDKVersion);
},
onShow(){
console.log(11111111111)
},
onLoad(e) {
console.log(3213213)
},
data() {
return {};
}
}
</script>  
<style lang="scss">  
</style>  

预期结果:

输出版本号,11111111111 3213213

实际结果:

输出版本号

bug描述:

在支付宝小程序编译运行后tab的第一个页面 onLoad 和onShow生命周期执行无效但是created mounted 等可以,其余tab页面正常onShow onLoad


更多关于uni-app 支付宝小程序tab第一个页面onShow无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 支付宝小程序tab第一个页面onShow无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在支付宝小程序中,tabBar的第一个页面确实存在生命周期执行的特殊情况。根据支付宝小程序的官方文档和实际运行机制,第一个tab页面在初始化时不会触发onShowonLoad,而是直接执行onLoadonShow的合并逻辑,表现为只执行created等更早的生命周期。

这是因为支付宝小程序的启动机制中,第一个tab页面作为首页加载时,其onShowonLoad可能被跳过或合并执行。从你的代码看,created中打印版本号正常,但onShowonLoad未触发,这符合支付宝小程序的预期行为。

解决方案:

  1. 将初始化逻辑移至createdmounted:对于第一个tab页面,建议将onLoadonShow中的初始化代码(如数据请求)移到createdmounted中执行。例如:
    created() {
      console.log(my.SDKVersion);
      this.loadData(); // 替代onLoad中的逻辑
    },
    mounted() {
      this.handleShow(); // 替代onShow中的逻辑
    }
回到顶部