文章目录
-
-
- [1. 页面跳转方式](#1. 页面跳转方式)
- [2. 你的场景分析](#2. 你的场景分析)
- [3. 页面生命周期](#3. 页面生命周期)
- [4. 总结](#4. 总结)
- [5. 建议](#5. 建议)
-
在微信小程序中,页面跳转时, onLoad
生命周期函数是否执行取决于跳转的方式和小程序的页面栈管理机制。以下是详细说明:
1. 页面跳转方式
微信小程序提供了多种页面跳转方式,不同的跳转方式会影响页面生命周期的触发:
跳转方式 | 描述 | onLoad 是否执行 |
---|---|---|
wx.navigateTo |
保留当前页面,跳转到新页面(页面栈增加一层) | 是 ,新页面会触发 onLoad |
wx.redirectTo |
关闭当前页面,跳转到新页面(页面栈替换) | 是 ,新页面会触发 onLoad |
wx.switchTab |
跳转到 tabBar 页面,关闭其他所有非 tabBar 页面 | 否 ,tabBar 页面不会触发 onLoad |
wx.reLaunch |
关闭所有页面,打开新页面 | 是 ,新页面会触发 onLoad |
wx.navigateBack |
返回上一个页面(页面栈减少一层) | 否 ,返回的页面不会触发 onLoad |
2. 你的场景分析
你在小程序中从产品页 跳转到我的页面,然后又跳转回来。根据你的描述,可能的情况是:
-
如果你使用的是
wx.navigateTo
:- 每次跳转到新页面时,新页面的
onLoad
都会执行。 - 返回时(使用
wx.navigateBack
),返回的页面不会触发onLoad
,而是触发onShow
。
- 每次跳转到新页面时,新页面的
-
如果你使用的是
wx.switchTab
:- 跳转到 tabBar 页面(如"我的页面")时,不会触发
onLoad
,而是触发onShow
。 - 从 tabBar 页面返回时,也不会触发
onLoad
。
- 跳转到 tabBar 页面(如"我的页面")时,不会触发
3. 页面生命周期
微信小程序的页面生命周期包括以下关键函数:
onLoad
:页面加载时触发,只会执行一次。onShow
:页面显示时触发,每次页面显示都会执行。onReady
:页面初次渲染完成时触发,只会执行一次。onHide
:页面隐藏时触发(跳转到其他页面时)。onUnload
:页面卸载时触发(页面被关闭时)。
4. 总结
- 如果你使用的是
wx.navigateTo
,每次跳转到新页面时,onLoad
都会执行。 - 如果你使用的是
wx.switchTab
,跳转到 tabBar 页面时,onLoad
不会执行,而是触发onShow
。 - 如果你没有退出小程序,只是来回跳转页面,
onLoad
是否执行取决于跳转方式。
5. 建议
如果你希望每次跳转到页面时都执行某些逻辑,可以将代码放在 onShow
中,而不是 onLoad
。因为 onShow
在每次页面显示时都会触发,而 onLoad
只会在页面初次加载时触发。