uniapp的uni.switchTab()跳转不刷新页面问题

1,593 阅读1分钟

uniapp的uni.switchTab()跳转不刷新页面问题

解决方法:

在跳转到tabbar之前的页面(也就是点击事件就执行跳转的页面)的跳转方法里面写

uni.switchTab({
  url: path, 
  success: function () {
    var page = getCurrentPages().pop();
    if (page == undefined || page == null) return;
    page.onLoad();
  }
})

这样就会在执行跳转方法后跳转到tabbar页面 并且执行 onLoad 等声明周期

onLoad(async (option: any) => {
}

uniapp的tabbar页面切换时候有时候监听不到生命周期

原因:

在 uni-app 中,tabBar 页面的生命周期和普通的页面生命周期有所不同。如果你发现 tabBar 页面监听不到生命周期,这可能是因为 tabBar 页面在启动时就已经加载,并且它们的生命周期和普通的页面跳转生命周期有所区别

  1. onLoad:页面加载时触发一次。但请注意,对于 tabBar 页面,当你首次打开应用时,所有 tabBar 页面都会触发 onLoad。之后,当你切换到不同的 tab 时,这些页面的 onLoad 不会被再次触发
  2. onShow:页面显示/切入前台时触发。当从其他非 tabBar 页面返回到 tabBar 页面时,或者切换 tab 时,都会触发 onShow
  3. onHide:页面隐藏/切入后台时触发。当你离开 tabBar 页面跳转到其他非 tabBar 页面时,会触发 onHide
  4. onUnload:页面卸载时触发。但在 tabBar 页面中,除非用户关闭应用,否则 onUnload 很少会被触发。

所以需要使用 onShowonHide

对于 tabBar 页面,你可能需要更多地依赖 onShow 和 onHide 来处理页面显示和隐藏的逻辑