当前位置:编程学习 > uniapp >>

uniapp 解决switchTab跳转tab页面不能直接传参问题

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

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

解决问题
利用uni.reLaunch()关闭所有页面,打开到应用内的某个页面。
// 跳转页面
uni.reLaunch({
  url:'pages/home/yizuotu.net?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() 中的代码在切换时执行。

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,