问题描述
在使用uniapp
中uni.switchTab
跳转到相应的 tabbar
页面后,无法读取到需要传递过来的参数。目前没有很好的直接传递参数的方法(2021年8月)。
问题分析
tabbar
页面在加载完成后,不会在切换和跳转中被销毁。也就是意味着跳转到已经加载过了的tabbar
页面后,onLoad
中的代码是不会去执行。好在onShow
、onHide
中的代码在切换、展现、隐藏执行。
解决问题
- 利用
uni.reLaunch()
关闭所有页面,打开到应用内的某个页面。
// 跳转页面
uni.reLaunch({
url:'pages/home/index?id=123&val=reLaunch'
});
// tabbar 页面
onLoad(option){
console.log(option); // {id: 123, val: reLaunch}
}
- 利用
uni.setStorageSync
本地缓存需要传递的参数,在跳转到tabbar
页面后用onShow
和uni.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}
}
问题总结
tabbar
加载后不会因跳转被销毁;uni.reLaunch()
可以关闭所有页面,打开某一页面;onShow()
中的代码在切换时执行。
点赞 评论 收藏 ~~ 有疑惑的小伙伴,可能是我表达不清楚,可以留言讨论,如有错误,也希望大家不吝指出。 ~~ 点赞 评论 收藏