小程序与小程序之间相互跳转、传值、接收参数、navigator、navigateToMiniProgram

小程序之间相互跳转的2种方法,以及接收另一个小程序传参

目录

一、通过标签 navigator 直接跳转

二、通过事件触发 wx.navigateToMiniProgram 跳转

三、小程序接收另一个小程序传参 


一、通过标签 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 | 微信开放文档

二、通过事件触发 wx.navigateToMiniProgram 跳转

wx.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){
    wx.navigateToMiniProgram({
        appId: 'xxxx',
        path: 'pages/index?name=第2个',//要打开B小程序的页面,这里是index
        extraData: { //给B小程序传的参数
          name: '第二种跳转方法',
          id:1,
          age:[18,19]
        },
        envVersion: 'develop',//打开的对应小程序环境:开发、体验、生产 ,这里是开发版
        success(res) {
          console.log('打开成功',res)
        }
     })
}

关于 wx.navigateToMiniProgram 详见官方文档:wx.navigateToMiniProgram(Object object) | 微信开放文档

wx.navigateToMiniProgram(Object object) | 微信开放文档

三、小程序接收另一个小程序传参 

方式一和方式二跳转 接收参数都一样

B小程序接收A传递过来的值,直接在onShow或者onLaunch中获取

注意:onLaunch 应用程序启动时触发一次 ,之后小程序进入后台在此打开不会触发,可根据自己的场景选择具体用哪个

//B小程序 app.js 中
onShow(options) {
    console.log('index.js onShow====',options)
}
onLaunch(options) {
    console.log('app.js onLaunch====',options)
}

①、在 path 路径上拼接的参数 在 query下

②、在 extra-data 中传的参数 在 referrerInfo 下 

B小程序运行打印结果如下

①、第一种方式打印结果

②、第二种方式打印结果

 

### 小程序 `navigateToMiniProgram` 传参方法详解 在小程序开发中,`navigateToMiniProgram` API 提供了两种主要的方式来实现跨小程序间的参数递:一种是通过 `path` 参数附带查询字符串的形式;另一种则是借助 `extraData` 对象来完成更为复杂的结构化数据输。 #### 1. 利用 Path Query String 实现简单参数递 这种方式适用于需要送少量且简单的键对情况。开发者可以在调用 `navigateToMiniProgram` 方法时,在其配置项中的 `path` 字段后面追加形如 `key=value&anotherKey=anotherValue...` 的查询字符串[^2]。 ```javascript uni.navigateToMiniProgram({ appId: '目标小程序的AppId', path: '/pages/example/example?param1=value1&param2=value2', // 在这里设置路径和参数 success(res) { console.log('跳转成功:', res); }, fail(err) { console.error('跳转失败:', err); } }); ``` 在目标小程序端,则需在其对应页面的 `onLoad` 生命周期函数内提取这些参数: ```javascript Page({ onLoad(options) { console.log('接收到的参数:', options); // 输出 { param1: 'value1', param2: 'value2' } } }); ``` 此法直观易懂,但对于较为复杂或者敏感的信息并不适用,因为它暴露在外容易被篡改或窃取[^2]。 #### 2. 借助 ExtraData 安全高效地发送更多样化的数据 对于那些不适合公开展示亦或是体积较大的数据来说,应该选用 `extraData` 来承载它们。相比起直接拼接到URL上的做法,这种方法更加隐蔽安全,并支持JSON格式的对象序列化[^1]。 下面是一个完整的例子展示了如何运用 `extraData` 向另一个小程序分享信息: ```javascript uni.navigateToMiniProgram({ appId: '目标小程序的AppId', path: '/pages/receiver/receiver', extraData: { user_id: 123, session_key: 'unique_session_identifier' }, // 设置额外的数据 success(res) { console.log('导航至其他小程序成功'); }, fail(err) { console.error('发生错误:', err); } }); ``` 而在接收方一侧,应当监听应用层面的 `onShow` 事件而非仅限于具体某页的加载动作,这样才能确保即使是在后台切换回来的情况下也能够正常获取到最新的 `extraData`[^2]: ```javascript App({ onShow(option){ if (option.referrerInfo && option.referrerInfo.extraData){ const dataFromOther = option.referrerInfo.extraData; console.log(dataFromOther.user_id, dataFromOther.session_key); } } }) ``` 得注意的是,为了保障用户体验的一致性以及考虑到不同平台间可能存在差异性的表现,务必测试清楚各个主流机型下的实际效果[^4]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值