问题:scene 太长(参数少但长),生成不了小程序码
原因:
- 使用getUnlimitedQRCode获取无限制的小程序码时,可接受页面参数scene的长度不能超过32位字符
了解BigInt
- JS 中的 NUmber 类型只能安全地表示-(2^53-1)和(2^53-1)之间的整数
- 任何超过这个范围的整数值都会丢失精度(四舍五入)
- 而使用
BigInt
就不会丢失精度
,可以运算大整数
使用 JSBI 插件
- 安装:npm install jsbi –save
- 用法:JSBI.BigInt()
解决方案
- 1.先把scene的
每个参数
用JSBI.BigInt()
包裹住,防止在转格式的时候丢失精度 - 2.然后调用
.toString(36)
转为36进制- 因为scene为32位的十进制,所以先转为36进制的.如果不满足可以考虑其他进制
- 3.然后使用
encodeURIComponent()
,生成二维码 - 4.按照分隔符解码和解构赋值得到参数:
[a,b,c,d] = decodeURIComponent(params.scene).split(';')
,- 此时拿到的参数是36进制的还要再转回十进制
- 5.转为十进制即可