最近在负责支付宝小程序的开发,遇到一个问题,在平台店领取优惠券后,需要跳转到相应的商家小程序去使用,这就涉及到小程序间的跳转问题,相关的API为navigateToMiniProgram。
1、不带参数的跳转;
(1)appId和页面路径为指定值:
goUse(item) {
uni.navigateToMiniProgram({
appId: "2020002180xxxxxx", //要跳转到的小程序的appId
path: "pages/index/index", //要跳转到的小程序的页面路径
success(res) {
// 跳转成功
}
})
}
(2)appId和页面路径为动态获取值
goUse(item) {
uni.navigateToMiniProgram({
appId: item.appId, //接口获取每个优惠券要跳转到的小程序的appId
path: item.url, //接口获取跳转到的小程序的页面路径
success(res) {
// 跳转成功
}
})
}
2、带参数的跳转;
goUse(item) {
uni.navigateToMiniProgram({
appId: item.appId, //接口获取每个优惠券要跳转到的小程序的appId
path: item.url, //接口获取跳转到的小程序的页面路径
extraData: {
id:item.id
},
success(res) {
// 跳转成功
}
})
}
问题就出现在了这种情况下,带参数的情况需使用 extraData 传值,然后在跳转到的页面的onLoad中获取:
onLoad(options) {
this.id = options.id
}
但这样却无法正常传值,导致跳转后页面没有数据,所以改用一下这种方法:
goUse(item){
uni.navigateToMiniProgram({
appId: item.appId,
path: item.url + '?id=' + item.id,
success(res) {
// 打开成功
}
});
}
将传参拼接到跳转的页面路径后,然后在跳转到的页面的onLoad中获取。
这样就可以实现带参数跨小程序跳转页面的功能了。
欢迎大家提出问题!