使用 wx.switchTab 切换到一个 Tab 页时,onLoad 函数不会执行,但 onShow 函数会执行

在使用 wx.switchTab 切换到一个 Tab 页时,onLoad 函数不会执行 ,但 onShow 函数会执行

这是因为小程序的 Tab 页通常是单例 模式,当你切换到某个 Tab 页时,它并不会被销毁,只是从后台切回到前台。因此,onLoad(页面首次加载时调用)不会再次触发,而 onShow(页面每次显示时调用)会被触发。

具体执行顺序

  1. 首次进入 Tab 页

    • onLoad 执行。
    • onShow 执行。
  2. 通过 wx.switchTab 切换到已经加载过的 Tab 页

    • onLoad 不执行。
    • onShow 执行。
  3. 通过 wx.navigateTo 或其他方式进入 Tab 页并重新初始化(极少见)

    • onLoad 执行。
    • onShow 执行。

如果需要每次切换 Tab 页时进行初始化操作

你可以把初始化逻辑放到 onShow 中,而不是 onLoad,这样无论是首次加载还是切换回来,都会执行对应的逻辑。

示例代码

javascript 复制代码
Page({
  onLoad() {
    console.log('onLoad executed'); // 只会在页面第一次加载时触发
  },
  onShow() {
    console.log('onShow executed'); // 每次页面显示时触发
  }
});

通过 wx.switchTab 切换时,你会看到只输出 onShow executed