首先uniapp提供了三种事件跳转方法:
一、uni.navigateTo({})
uni.navigateTo({
url: 'test?id=1&name=uniapp'
});
注意:该方法只能跳转至非tabbar页面,传递少量参数
二、uni.switchTab({})
uni.switchTab({
url:"/pages/car/car?name=name"
})
注意:该方法可以跳转至tabbar页面,并传递参数;在跳转页面使用onLoad或onShow生命周期接收(onLoad加载过的页面不会重新加载;onShow则没有这个问题)
onLoad: function(obj) { //option为object类型,会序列化上个页面传递的参数
console.log(obj); //打印出上个页面传递的参数。
},
onShow(){
let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
let curRoute = routes[routes.length - 1].route //获取当前页面路由
console.log("当前页面的路由",curRoute);
let curParam = routes[routes.length - 1].options; //获取路由参数
console.log("当前页面的参数",curParam);
},
三、uni.reLaunch({})
uni.reLaunch({
url:"/pages/car/car?name=name"
})
注意:关闭所有页面,打开到应用内的某个页面;可以配合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}
}