最近遇到一个棘手的问题,发现一个诡异的 bug。经过深入排查,最终定位到问题出在小程序从微信小程序的搜索栏搜索进入时未触发 onLaunch 事件。

用户进入小程序时,会进行身份判断。对于特定身份,用户不会停留在首页,而直接跳转至“我的”页面,并且底部 tabBar 也不会展示。然而,问题在于从微信小程序的搜索栏搜索进入时未触发 onLaunch 事件,导致无法正确跳转至“我的”页面,同时底部 tabBar 也未展示。

为了解决这个问题,我们在首页的 onShow 事件中添加了相应的判断处理。需要注意的是,这里指的是首页的 onShow 事件,而非整个小程序的 onShow 事件,因为使用小程序的 onShow 可能会触发其他潜在问题。

演示代码:

// 首页的 Page 对象中
Page({
  onShow: function () {
    // 在首页的 onShow 事件中进行身份判断和处理
    const isSpecificIdentity = /* 判断是否为特定身份的条件 */;
    
    if (isSpecificIdentity) {
      // 跳转至“我的”页面
      wx.navigateTo({
        url: '/pages/my/my',
      });

      // 隐藏底部 tabBar
      wx.hideTabBar();
    }
  },
  // 其他页面的 onShow 事件...
});

这样,通过在首页的 onShow 事件中添加了特定身份的判断处理,我们能够解决因微信小程序的搜索栏搜索进入而未触发 onLaunch 事件导致的问题。