如果小程序中页面跳转使用传参频繁,那在这里不建议使用微信源生的tabBar
在微信官方文档中,跳转到tabBar页面时是不允许传参的
这里的tabBar尽量自己写一个,而且官方的页面底部tab对样式有限制,并不是所有的样式都能满足
页面跳转时的传参
- 页面间的参数可以直接挂在URL上
和网页间参数传递一样的用法,但是在获取参数时可以使用 wx.getLaunchOptionsSync() 来获取到, query 下的数据就是传递的参数, 这里的参数并不是一开始的参数, 这个参数是实时的,每传递一次参数,这里的query中的内容都会是你当前页面的参数
进入页面时可以直接在页面的onLoad中捕获到用户传递的参数
Page({
onLoad(res) {
// res里的query就是用户传递的参数
}
})
-
传递对象/数组
小程序中没有直接传递对象/数组的方法,但是小程序中的storage可以保存对象/数组类型的数据 :
1️⃣可以先将数据在页面跳转之前保存到storage中,跳转完成之后,在新页面中获取保存的数据,再将保存的数据remove.但是这个方法并不推荐使用,使用不仅不方便,而且会影响小程序执行的速度
2️⃣将数据使用Json.stringify转换成字符串,然后挂到URL上,使用URL传递参数,在新页面中使用Json.parse将参数从字符串转换成对象/数组 -
进入小程序时携带参数
有时进入小程序时就需要携带参数,进入小程序时,可以在小程序的入口文件onLaunch和onShow中捕获到所有的参数,也可以在页面中使用wx.getLaunchOptionsSync()来获取到传入的参数.
App({
onLaunch: function (options) {
// 小程序加载时执行的函数
},
onShow: function (options) {
/*
小程序显示时执行的函数
1. 小程序首次加载时会执行此函数
2. 小程序从后台返回时会执行此函数
3. 使用wx.reLaunch跳转时会执行此函数
*/
}
})
小程序加载时的参数有两种,一种是系统自带的参数,另一种是用户自定义的参数;
首先是path,也就是小程序启动时页面的路径,用户自定义的参数都是挂在这个上面的,但是在这里不显示
其次是scene, 场景值,也就是启动小程序的场景;
然后就是query,用户自定义挂到页面路径上的参数会在这里以对象的结构呈现;
shareTicket, 当用户通过转发的链接打开的小程序时,和转发相关的信息会带在这里一并传递给小程序;
referrerInfo, 当用户从小程序/公众号/app中进入小程序时带有的参数,否则为 {}
返回有效 referrerInfo 的场景
场景值 | 场景 | appId含义 |
---|---|---|
1020 | 公众号 profile 页相关小程序列表 | 来源公众号 |
1035 | 公众号自定义菜单 | 来源公众号 |
1036 | App 分享消息卡片 | 来源App |
1037 | 小程序打开小程序 | 来源小程序 |
1038 | 从另一个小程序返回 | 来源小程序 |
1043 | 公众号模板消息 | 来源公众号 |