微信小程序onshow里拿参数

本文探讨了原生小程序语法中,在onShow生命周期如何利用this.options获取参数,并通过实例展示了如何在wepy封装环境下使用$wx来访问options对象。

原生小程序语法直接在onshow生命周期里使用this.options

// 以下$wx是被wepy封装了一层.
  onShow () {
    console.log(this)
    let { $wx: { options } } = this
    this.recommendList(options.id)
  },
<think>我们正在讨论微信小程序码如何添加参数的问题。根据之前的引用和用户当前的问题,用户想知道如何为微信小程序码添加参数。 引用[1]提到生成携带参数的二维码,引用[2]则展示了JAVA生成微信小程序码的代码,其中涉及获取access_token的步骤。 在微信小程序中,生成小程序码时可以传递参数(scene),这样当用户扫码进入小程序时,可以通过scene参数获取传递的值。通常有两种方式: 1. 通过接口生成小程序码(wxacode.get)或生成小程序二维码(createQRCode)时,可以设置scene参数。 2. 在生成的小程序码中,scene参数会被编码在二维码中,当用户扫码后,小程序可以在App的onLaunch或onShow中通过options.scene获取。 具体步骤: 步骤1:获取access_token(如引用[2]所示,通过appid和secret获取,并缓存起来,因为调用其他接口需要此token) 步骤2:调用微信生成小程序码的接口,其中POST请求的JSON数据中包含scene参数(注意scene参数的长度限制,最大32个字符)以及其他参数(如页面路径等)。 微信提供了三个接口: a. 创建小程序二维码(createQRCode):适用于需要的二维码数量较少的业务场景,参数在query中传递,但已经不再推荐,建议使用后两个。 b. 获取小程序码(getwxacode):适用于需要的二维码数量较少的业务场景,通过POST传递参数,可以自定义路径和scene参数。 c. 获取小程序码(getwxacodeunlimit):适用于需要的二维码数量极多的业务场景,同样通过POST传递参数,但scene参数可以支持字符串(最大32个字符)且不限制数量(通过不同的scene值区分)。 用户问题中特别提到“带参数”,所以我们需要关注scene参数。 以接口c(getwxacodeunlimit)为例: 请求URL:https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN 请求方式:POST 请求体(JSON): { "scene": "参数", // 场景值,最大32个字符 "page": "pages/index/index", // 必须是已经发布的小程序存在的页面,如果不填写则默认打开首页 "width": 430, // 二维码的宽度,单位是px,最小280px,最大1280px "auto_color": false, // 是否自动配置线条颜色 "line_color": {"r":0,"g":0,"b":0}, // 当auto_color为false时生效,使用rgb设置颜色 "is_hyaline": false // 是否需要透明底色 } 返回结果:如果调用成功,会返回图片的二进制流(image/png),否则返回JSON格式的错误信息。 例如,在Java中,我们可以这样实现(伪代码): 1. 获取access_token(如引用[2]的方法)。 2. 构建请求参数,包括scene等。 3. 发送POST请求到上述URL,获取二进制流,然后保存为图片。 注意:scene参数传递后,在小程序中如何获取? 在小程序启动时(app.js中的onLaunch或onShow),可以通过options.scene获取到scene值。注意,scene值需要解码(如果传递时进行了编码,比如urlencode,则需要decodeURIComponent)。 例如: onLaunch: function(options) { // 如果是扫描二维码进入 if (options.scene) { // 解析scene,比如我们传递的是字符串参数 let scene = decodeURIComponent(options.scene); // 然后可以根据scene做相应的处理 } } 因此,生成小程序码时添加参数的关键就是在调用生成接口时设置scene参数。 下面我们生成相关问题: 1. 微信小程序码的scene参数有什么限制? 2. 如何在小程序中解析scene参数? 3. 除了scene参数微信小程序码还可以设置哪些参数? 4. 生成微信小程序码时,如何避免access_token过期? 5. 微信小程序码的生成数量有限制吗? </think>### 微信小程序码添加参数的方法 在微信小程序中,为小程序码添加参数主要通过 **scene 参数**实现,具体步骤如下: #### 一、核心方法:使用 scene 传参 1. **生成小程序码时传递参数** ```javascript // 调用微信生成小程序码接口示例(使用 getwxacodeunlimit API) POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=YOUR_TOKEN ``` ```json { "scene": "id=123&type=promotion", // 参数键值对(长度≤32字符) "page": "pages/home/index", // 目标页面路径 "width": 430, // 二维码宽度 "is_hyaline": true // 透明背景 } ``` - **scene**:携带的参数(需 URL 编码复杂内容) - **page**:用户扫码后打开的小程序页面路径(需在 app.json 中注册) 2. **小程序获取参数** 在目标页面的 `onLoad` 生命周期中解析参数: ```javascript onLoad(options) { // 解码 scene 参数(如:id=123&type=promotion) const scene = decodeURIComponent(options.scene); const params = new URLSearchParams(scene); console.log(params.get('id')); // 输出:123 console.log(params.get('type')); // 输出:promotion } ``` #### 二、注意事项 1. **参数长度限制** scene 字段最大 **32 字符**,超长需压缩或使用 ID 映射。 2. **access_token 获取** 需先调用接口获取 token(参考引用 [^2]): ```javascript GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET ``` 3. **页面路径要求** - 必须是已发布的合法页面路径 - 根路径前不加 `/`(正确:`pages/index/index`) #### 三、完整流程示例 1. 后台生成小程序码 → 2. 用户扫码 → 3. 小程序自动跳转到指定页面 → 4. 页面通过 `options.scene` 解析参数 > **提示**:复杂参数建议先编码处理: > ```javascript > const scene = encodeURIComponent("name=测试&date=2023-01-01"); > ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值