uni-app短时间内重复进入小程序,每次进入都会执行app.vue吗?onLaunch会触发吗?

发布于 1周前 作者 htzhanglong 来自 Uni-App

uni-app短时间内重复进入小程序,每次进入都会执行app.vue吗?onLaunch会触发吗?

外部扫码进入小程序,没有走onlaunch事件…所以小程序中,app.vue的调用机制是啥

1 回复

在uni-app中,关于小程序短时间内重复进入的行为,主要涉及两个生命周期函数:App() 构造函数中的 onLaunch 和页面级的 onLoad 或其他相关生命周期函数。由于你特别提到了 app.vueonLaunch,我将主要围绕这两个点进行说明,并提供相关代码案例。

app.vue 和 onLaunch

在uni-app中,app.vue 是应用的入口文件,相当于小程序的 app.jsonLaunchApp() 构造函数中的一个生命周期方法,它会在小程序启动时自动调用,且整个生命周期内只调用一次(除非小程序被彻底关闭并重新启动)。

然而,对于“短时间内重复进入小程序”的场景,需要明确的是:

  1. 如果用户只是将小程序切换到后台再切回前台onLaunch 不会被再次触发。此时,可能会触发 onShow 生命周期方法。

  2. 如果用户完全关闭小程序后再次打开onLaunch 会被重新触发。

代码案例

以下是一个简单的 app.vue 示例,展示了 onLaunchonShow 的使用:

<script>
export default {
  onLaunch: function() {
    console.log('App Launch');
    // 执行一些初始化操作,比如登录状态检查、全局变量设置等
    uni.setStorageSync('launchCount', (uni.getStorageSync('launchCount') || 0) + 1);
  },
  onShow: function() {
    console.log('App Show');
    // 每次小程序显示到前台时执行的操作
    const launchCount = uni.getStorageSync('launchCount');
    console.log(`This is the ${launchCount}th time the app has been launched (including re-opens).`);
  },
  // 其他生命周期方法...
};
</script>

<style>
/* 全局样式 */
</style>

在这个例子中,onLaunch 用于记录小程序启动的次数(通过存储到本地的方式),而 onShow 则每次小程序显示到前台时都会被触发,可以用于更新UI、检查网络状态等操作。

结论

综上所述,对于“短时间内重复进入小程序”的情况,app.vue 中的 onLaunch 只在小程序首次启动或彻底关闭后重新打开时被触发,而页面级的生命周期方法(如页面的 onLoad)则可能在每次进入该页面时都会被触发。因此,根据具体需求选择合适的生命周期方法进行业务逻辑处理是关键。

回到顶部