扫码进入
二维码是后台给过来的,详情查看 微信二维码跳转规则
前端拿参数
通过上面方法生成的二维码扫码进入后的地址 是经过 encodeURIComponent 编码的所以 我们需要通过 decodeURIComponent 进行解码 。
他是有一个 q 参数的
Page({
onLoad(query) {
const q = decodeURIComponent(query.q) // 获取到二维码原始链接内容
const scancode_time = parseInt(query.scancode_time) // 获取用户扫码时间 UNIX 时间戳
}
})
使用 Taro 框架 扫码进入获取参数
我最开始在微信开发者工具调试的时候,他是有 q 这个参数的 但是 我发到正式版本之后就没有了,我也不知道是怎么回事,
# 假设真实路径为 https://baidu.com?id=2
function getSceneFromCurrentPage() {
try {
const currentPage = Taro.getCurrentInstance().router;
if (currentPage?.params.q) {
//
let urlQ = decodeURIComponent(currentPage?.params.q)
// 这个 urlQ 才是 原始的参数 https://baidu.com?id=2
if (urlQ.includes('?')) {
let str = urlQ.split('?')
str.map(s => {
let strArr = s.split('=')
if (strArr[0] === 'id') {
console.log(strArr[1], 'strArr[1]')
throw strArr[1]
}
})
}
return urlQ;
} else {
# 我发正式版本后
if (currentPage?.params?.scene) {
# currentPage?.params.scene 是 id%3A2
// 所以我们需要 decodeURIComponent 解码
// 我们进行编码的后得到 id:2
let param = decodeURIComponent(currentPage?.params.scene)
if (param.includes(':')) {
let str = param.split(':')
param = str[1]
}
return param
}
}
} catch (e) {
return e
}
}
获取分享出去路由携带的参数
useShareAppMessage((res) => {
if (res.from === 'button') {
// 来自页面内转发按钮
getApipostShare()
}
return {
title: '分享',
path: `pages/index/index/?id=${2}`,
}
})
// https://baidu.com?id=2
const $router = useRouter();
$router.params.id