微信扫描二维码跳转小程序无法获取url参数
记录一下碰到的bug,原因还是文档没看仔细,找到的资源较少所以写篇文章。
bug重现:先生成一个带有参数的二维码,配置小程序扫码跳转小程序,在onLoad里获取参数,调试和预览全部正常,上线后发现参数全部获取不到。
bug原因: 小程序为了安全考虑,把所有扫描非小程序二维码的参数全部encode后放在了参数q里,所以我们要重新从q里获取参数并decode
代码:
getQuery(query) {
return query
.slice(query.indexOf("?") + 1)
.split("&")
.reduce((prev, curr) => {
let [key, val] = curr.split("=");
prev[key] = val;
return prev;
}, {});
}
onLoad(query) {
const q = decodeURIComponent(query.q) // 获取到二维码原始链接内容
const {
id,
type
} = getQuery(q)
this.id = id || query.id // 为了本地测试
this.type = type || query.type
}