需求场景:从非tabBar页面B跳转到tabBar页面A,并想要携带参数。 如果使用uni.switchTab传参,会导致tabBAE页面获取不到参数;
原因: 官方文档有说,uni.switchTab路径后不能带参数;
uni.navigateTo是可以传参,但是跳转到 tabBar 页面只能使用 switchTab 跳转(不完全对);
实测:到导航栏tabBar页也可以用reLaunch还可以携带参数,且一定会触发onLoad和onShow(因为reLaunch既关闭了所有页面 也可以跳转到任意页面);但不建议使用,因为reLaunch关闭所有页面,会导致你再次点击另外一个tabBar导航栏C页时候,也会再次触发C页的onLoad
解决方案:
- 跳转页面依旧使用uni.switchTab,参数使用uni.setStorageSync存到缓存内,跳转到tabBar后仅会触发onShow,此时在onShow内获取uni.getStorageSync缓存参数;
- 或者使用reLaunch传参跳转,会触发导航栏页的onLoad和onShow
注意点: 只有五种情况会触发导航栏tabBar页的onLoad函数,分别是:
–1.1:首次进入到导航栏tabBar页面;
–1.2:从微信分享进入的导航栏tabBar页面;
–1.3:识别二维码跳转到小程序的导航栏tabBar页面;
–1.4:使用了uni.reLaunch后销毁了所有其他页面,点击返回首页按钮,到的首页,也会触发首页的onLoad函数;或者直接使用uni.reLaunch到tabBar页,也会触发其onLoad;(因为reLaunch既关闭了所有页面 也可以跳转到任意页面,包括跳到tabBar页)
–1.5:重要一点:只要这个tabBar页被销毁了,下次进入到这个tabBar页就会触发其onLoad和onShow(类似1.4触发)
其余从任何页面返回到tabBar页面,都不会触发tabBar页面的onLoad函数,仅仅是触发onshow ;(包括uni.switchTab跳转到tabBar页面,也只是触发onShow)
另:uni.navigateTo跳转无效问题 和 onLoad与onShow执行问题