问题描述

在使用uniappuni.switchTab跳转到相应的 tabbar 页面后,无法读取到需要传递过来的参数。目前没有很好的直接传递参数的方法(2021年8月)。

问题分析

tabbar 页面在加载完成后,不会在切换和跳转中被销毁。也就是意味着跳转到已经加载过了的tabbar页面后,onLoad 中的代码是不会去执行。好在onShowonHide 中的代码在切换、展现、隐藏执行。

解决问题
  1. 利用uni.reLaunch()关闭所有页面,打开到应用内的某个页面。
// 跳转页面
uni.reLaunch({
  url:'pages/home/index?id=123&val=reLaunch'
});

// tabbar 页面
onLoad(option){
  console.log(option); // {id: 123, val: reLaunch}
}
  1. 利用uni.setStorageSync本地缓存需要传递的参数,在跳转到tabbar页面后用onShowuni.getStorageSync拿到存储的参数。
// 跳转页面
toSomePage(){
  uni.setStorageSync('option',{id:123, val:'switchTab'})
  uni.switchTab({
  	url:'pages/home/index'
	});
}

// tabbar 页面
onLoad(option){
  console.log(option); // {}
},
onShow(){
  let option = uni.getStorageSync('option');
  console.log(option); // {id: 123, val: reLaunch}
}
问题总结
  1. tabbar 加载后不会因跳转被销毁;
  2. uni.reLaunch()可以关闭所有页面,打开某一页面;
  3. onShow() 中的代码在切换时执行。

点赞 评论 收藏 ~~ 有疑惑的小伙伴,可能是我表达不清楚,可以留言讨论,如有错误,也希望大家不吝指出。 ~~ 点赞 评论 收藏
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐