本文主要是介绍Error in onLoad hook: “URIError: URI malformed“ found in…报错处理以及完善uniapp针对对象传参,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用uniapp传参的过程中遇到这么一个问题,当我们需要传整个对象作为参数时,我会先将这个对象先编码,然后再解码,从而获取到怎么参数,平常实操的时候也没有遇到过问题,但是今天测试的时候,刚好一个数据碰巧,就报错了,报错内容就是:
//跳转前页面的方法
toDeviceDetail(deviceInfo) {//传参对象,使用encodeURIComponent编码let query = encodeURIComponent(JSON.stringify(deviceInfo))uni.navigateTo({url:'/pages/……/deviceDetail?deviceQuery='+ query})
},// 跳转后页面获取的参数的方法
onLoad(options) {let obg ={}// 获取传递的对象参数,使用decodeURIComponent解码,并转为对象obj = JSON.parse(decodeURIComponent(options.deviceQuery));
}
bug原因是,如果编码的对象中的参数有“%”,那么就会对编码跟解码造成问题,从而报错
解决方案:正常解码,编码时对所有“%”进行单独处理,手动转换为“%25”,代码如下:
toDeviceDetail(deviceInfo) {//传参对象,使用encodeURIComponent编码let str = JSON.stringify(deviceInfo)//注意这里——————————————————————str = str.replace(/%/g, '%25')//这里———————————————————————————let query = encodeURIComponent(str)uni.navigateTo({url:'/pages/……/deviceDetail?deviceQuery='+ query})
},
最终实现在uni-app中跳转页面并传递对象参数的需求 解决这个问题的关键就是需要手动转换为“%25”
这篇关于Error in onLoad hook: “URIError: URI malformed“ found in…报错处理以及完善uniapp针对对象传参的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!