**
微信小程序
**
比如从抖音点击页面跳转到微信小程序,并携带参数传过来。
// app.js
onLaunch(options) {
console.log('onLaunch', options)
this.globalData.query = options.query || {}
if (options.referrerInfo) {
this.globalData.query = Object.assign(this.globalData.query, options.referrerInfo.extraData)
}
},
onShow(options) {
console.log('onShow', options)
if (Object.keys(options.query).length > 0) {
// 解决连续扫两次带参数的码,参数丢失的问题
this.globalData.query = options.query || {}
// 处理通过小程序码进来的参数,包括渠道码等,放置到全局数据中
if (options.query.scene) {
let queryObj = {}
var strs = decodeURIComponent(options.query.scene).split('&') //以&分割
for (var i = 0; i < strs.length; i++) {
queryObj[strs[i].split('=')[0]] = unescape(strs[i].split('=')[1])
}
Object.assign(this.globalData.query, queryObj)
}
}
if (options.referrerInfo) {
this.globalData.query = Object.assign(this.globalData.query, options.referrerInfo.extraData)
}
},
globalData: {
query: {}
}
// 页面js
onLoad(options) {
this.setData({
参数名: options.参数名 || app.globalData.query.参数名 || ''
})
}
链接:
https://developers.weixin.qq.com/community/develop/doc/000a66716b09e0612dddc7efe59c00
**
uniapp小程序
**
在uniapp小程序中,接收App(实际上,在小程序的上下文中,我们通常指的是微信、支付宝等小程序平台,而不是原生App)传过来的参数,主要通过小程序的启动参数或页面路由参数来实现。不过,需要注意的是,小程序并不能直接接收来自另一个原生App的参数,除非这些参数是通过某种方式(如URL Scheme、剪贴板、服务器中转等)间接传递给小程序的。
对于小程序内部或从小程序外部(如小程序码、分享链接等)进入小程序时接收参数,通常有以下几种方式:
- 启动参数(App.onLaunch 或 App.onShow)
当小程序启动时,可以通过App.onLaunch或App.onShow函数接收启动参数。这些参数通常是通过小程序码、分享链接等方式传递的。
// App.vue 或 app.js
export default {
onLaunch: function (options) {
// options 中包含小程序启动时的参数
console.log('App Launch Options:', options);
// 注意:这里可能不包含页面路由参数
},
onShow: function (options) {
// 当小程序启动,或从后台进入前台显示时触发
// options 中也可能包含一些参数,但通常不包含页面路由参数
console.log('App Show Options:', options);
},
// ... 其他代码
}
然而,需要注意的是,这些启动参数并不包括页面级的路由参数。
- 页面路由参数(Page.onLoad)
当从一个小程序页面跳转到另一个页面时,可以通过URL传递参数,并在目标页面的onLoad函数中接收这些参数。
// 目标页面
export default {
onLoad: function (options) {
// options 为页面跳转所带来的参数
console.log('Page Load Options:', options);
// 例如,如果跳转时URL为 pages/index/index?id=1,则 options.id 的值为 1
},
// ... 其他代码
}
模拟