在使用 wx.switchTab
切换到一个 Tab 页时,onLoad
函数不会执行 ,但 onShow
函数会执行。
这是因为小程序的 Tab 页通常是单例 模式,当你切换到某个 Tab 页时,它并不会被销毁,只是从后台切回到前台。因此,onLoad
(页面首次加载时调用)不会再次触发,而 onShow
(页面每次显示时调用)会被触发。
具体执行顺序
-
首次进入 Tab 页
onLoad
执行。onShow
执行。
-
通过
wx.switchTab
切换到已经加载过的 Tab 页onLoad
不执行。onShow
执行。
-
通过
wx.navigateTo
或其他方式进入 Tab 页并重新初始化(极少见)onLoad
执行。onShow
执行。
如果需要每次切换 Tab 页时进行初始化操作
你可以把初始化逻辑放到 onShow
中,而不是 onLoad
,这样无论是首次加载还是切换回来,都会执行对应的逻辑。
示例代码
javascript
Page({
onLoad() {
console.log('onLoad executed'); // 只会在页面第一次加载时触发
},
onShow() {
console.log('onShow executed'); // 每次页面显示时触发
}
});
通过 wx.switchTab
切换时,你会看到只输出 onShow executed
。