最开始做这个功能 完全根据后端来的(后端做过)我就没看这个的技术文档了以至于这个功能拖了大约两三天一直存在问题。
关于这个功能始终不行;我推测肯定是 微信扫码后做的操作我这边是获取的不正确的、然经其他同事提醒最终“悟了”晓得怎们操作
话不多说CodeReview。
下饭操作(错误逻辑)
// uniapp技术栈
// 最开始直接获取的from_id一直不存在
// uni.getCurrentPages()...
let pagesArr = uni.getCurrentPages()
let crtPage = pagesArr[pagesArr.length - 1]
wxlogin({
code,
from_id: crtPage .options.from_id // 微信方面并没有直接通过扫码返回from_id. Error.
}).then(res => {})
正确逻辑
// 根据二维码跳转到微信小程序进行登录onLoad(options)进行取值
// pages/login/login
onLoad(options) {
// ?. 可选链操作符
// if(options && options.q) {
if(!!options?.q) {
let from_id = null
const { q } = options
// q 是一个encodeURIComponent转换的链接,需要解码
let link = decodeURIComponent(q)
// example: "https://xx.xx.com/from_id/xxxxxx"
let regexp = /^http[s]:\/\/\w*.\w*.\w*\/from_id\/(\w*)$/
let result = link.match(regexp) || []
if(result.length > 1)
from_id = result[1]
// Other code...
}
// Other code...
}
小结&参考
自我反省;做任何新功能前还是要先看官方文档的好
ps: 有问题请留言