小程序之间相互跳转的2种方法,以及接收另一个小程序传参
一、通过标签 navigator 直接跳转
<navigator target="miniProgram" open-type="navigate" app-id="要跳转的小程序APPID" path="要跳转的小程序页面" version="开发版/体验版/正式版" extra-data="给要跳转的小程序传的参数">
点击跳转都其他小程序
</navigator>
例: 小程序A 和小程序B, A要唤起B小程序
关于 extra-data 的写法,如果格式写得不对会出现 extra-data="null"的情况,可以写死或动态值
1、直接写死在页面上 extra-data="{{ {name: test} }}"
2、在data中定义页面获取 extra-data="{{wxExtraData}}"
<!-- A 小程序-->
<!-- 注 <navigator>标签不能放在 <text>标签里 -->
<!-- path 的路径上也可以放参数 -->
<view>
<navigator open-type="navigate" target="miniProgram" app-id="B小程序的appid" path="pages/index?name=test222" extra-data="{{ {id: 3} }}" version="develop">跳转到B小程序</navigator>
<navigator open-type="navigate" target="miniProgram" app-id="B小程序的appid" path="pages/index?name=test222" extra-data="{{wxExtraData}}" version="develop" >跳转到B小程序</navigator>
</view>
//A小程序 点击跳转的页面的 .js文件中
data:{
ExtraData:{
name:"test",
id:1
}
}
注意:app-id="这里面千万别有空格,否则不报错还无法跳转"
关于 target、open-type、path、extra-data、version以及其他参数详细见文档:navigator | 微信开放文档
二、通过事件触发 uni.navigateToMiniProgram 跳转
uni.navigateToMiniProgram({
appId: '要唤起的小程序的appid',
path: '',//要打开B小程序的页面
extraData: { },//需要传递给目标小程序的数据,目标小程序可在 App.onLaunch,App.onShow 中获取到这份数据
envVersion: 'develop',//打开的对应小程序环境:开发develop、体验trial、生产release
success(res) {
console.log('打开成功',res)
}
})
例:
<!-- A小程序页面 -->
<view bindtap="testTo">点击跳转到 B 小程序</view>
// A小程序 .js
testTo(options){
uni.navigateToMiniProgram({
appId: 'xxxx',
path: 'pages/index?name=222',//要打开B小程序的页面,这里是index
extraData: { //给B小程序传的参数
name: '第二种跳转方法',
id:1,
age:[18,25]
},
envVersion: 'develop',//打开的对应小程序环境:开发、体验、生产 ,这里是开发版
success(res) {
console.log('打开成功',res)
}
})
}
补充:extraData可以从launchOptions中获取,也可以直接从被打开页面onLoad等方法中的的options中获取