开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
native 渲染
性能与优化
小程序全局配置
小程序页面
axml
sjs 语法参考
事件系统
自定义组件
基础能力
分包
基础库
基础库更新日志
开发 > 框架 > 基础能力 > 小程序全局 / 页面参数设置以及解析细节
收藏
订阅更新
我的文档
设置
设置全局 / 页面参数
假设要设置小程序全局参数为 {a: 1, b: 2},页面参数为 {pagea: 1, pageb: 2}
在设置前需要先将参数从对象转换成字符串,转换的规则与 npm 包 stringify 方法的默认转换规则一致,示例如下:
javascript
复制代码
import qs from 'query-string';
const appquery = {a: 1, b: 2};
const pagequery = {pagea: 1, pageb: 2};
console.log(qs.stringify(appquery)); // a=1&b=2
console.log(qs.stringify(pagequery)); // pagea=1&pageb=2
注意qs.stringify 方法的默认规则会对键 / 值做 encodeuricomponent 操作。若上方示例里的 appquery 或者 pagequery 的键 / 值带有特殊字符,例如 '&',则会被转成'&',示例代码如下:
javascript
复制代码
import qs from 'query-string';
const appquery = {'&': 'a'};
const pagequery = {pagea: '&'};
// 即 encodeuricomponent('&')=encodeuricomponent('a')
console.log(qs.stringify(appquery)); // &=a
// 即 encodeuricomponent('pagea')=encodeuricomponent('&')
console.log(qs.stringify(pagequery)); // pagea=&
解析全局 / 页面参数
基础库在解析全局参数、页面参数时会调用 npm 包 parse 方法。在解析字符串时默认会对键 / 值做 decodeuricomponent 处理。
javascript
复制代码
import qs from 'query-string';
// 即 {decodeuricomponent('&'): decodeuricomponent('a')}
qs.parse('&=a'); // {&: 'a'}
// 即 {decodeuricomponent('pagea'): decodeuricomponent('&')}
qs.parse('pagea=&'); // {pagea: '&'}
应用配置 behavior.decodequery
从基础库 2.7.19ide 3.0.0 开始,小程序 app.json 应用配置 behavior 配置项新增了 decodequery 字段。当 decodequery 值设置为 disable 时,基础库在解析参数字符串时将不再对键 / 值做 decodeuricomponent 处理。
注意
应用设置 behavior.decodequery 全局生效,其中构建部分从 ide 3.0.0 开始支持,基础库从 2.7.19 开始支持。为保证设置与解析完全匹配,请 为 2.7.19 及以上,保证设置 behavior.decodequery 的新版本小程序能够被基础库准确识别。
正常情况下,当键 / 值不带有特殊字符(例如: ? = / & :)时,无论是否配置 behavior.decodequerydisable,解析结果是一致的。建议在设置参数时,尽量避免有特殊字符。
配置示例
设置前后的效果对比:
behavior.decodequery 的影响范围
可以简单归纳为:用字符串传递参数的场景,都受 behavior.decodequery 设置影响。例如以下场景:
schemequery 的值:用于解析生成全局参数对象。
schemepage? 后内容:用于解析页面参数对象。
小程序开发者工具(ide)编译模式面板内的页面参数、全局参数设置:用于解析全局参数对象和页面参数对象。
1652358760064-48e2aaf6-14c6-412e-ab87-d2ba60a63714.png

my.navigatetomy.relaunchmy.redirectto 以及小程序 / 插件内页面跳转类接口的 url 参数 ? 后内容:用于解析页面参数对象。
my.navigatetominiprogrampath参数 ?后内容:用于解析页面参数对象。
组件 navigatorurl 属性值 ?后内容:用于解析页面参数对象。
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559