uni-app鸿蒙Next端uni.request的post的data中数组丢失
uni-app鸿蒙Next端uni.request的post的data中数组丢失
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
PC开发环境操作系统版本号:Sequola15.5
HBuilderX类型:Alpha
HBuilderX版本号:4.72
手机系统:HarmonyOS NEXT
手机系统版本号:HarmonyOS 5.0.1
手机厂商:华为
手机机型:Mate70Pro+
页面类型:vue
vue版本:vue3
打包方式:云端
示例代码:
一、可以成功发送到后端的代码:
const arr = [{id:1},{id:2}]
uni.request({
url: 'https://www.example.com/request',
data: {
arr: arr
},
success: (res) => {
console.log(res.data);
}
});
后端可以正常接收到arr
二、不可以成功发送到后端的代码:
this.arr = [{id:1},{id:2}]
uni.request({
url: 'https://www.example.com/request',
data: {
arr: this.arr
},
success: (res) => {
console.log(res.data);
}
});
后端接收到arr是空的
操作步骤:
this.arr = [{id:1},{id:2}]
uni.request({
url: 'https://www.example.com/request',
data: {
arr: this.arr
},
success: (res) => {
console.log(res.data);
}
});
预期结果:
后端可以接收到arr
实际结果:
后端不可以接收到arr
bug描述:
uni.requset的post的data中放数组是很常见的,并且在uniapp中使用多年,无论是ios、安卓、web,还是鸿蒙Next的上一个版本中也没有出问题。但这一次打包鸿蒙Next发现问题。只要data中的数组是来自于this,就无法正常被发送,似乎丢失了。
目前我想要修复这个问题,需要在data中将所有数组都进行一次拷贝,无论是来自this还是vuex,以前是没有这么麻烦的。
更多关于uni-app鸿蒙Next端uni.request的post的data中数组丢失的实战教程也可以访问 https://www.itying.com/category-93-b0.html
对的有这个问题,是鸿蒙 jsvm 的数组有兼容性问题,预计下个版本更新修复
更多关于uni-app鸿蒙Next端uni.request的post的data中数组丢失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
修复了嘛。。。。。。现在还会出现哎,H5、app、小程序都正常,鸿蒙不行
回复 8***@qq.com: 修复了,是否harmony-configs下有oh-package?或者更新到4.75 之后删除unpackage重新运行
这是一个在uni-app鸿蒙Next端已知的数据绑定问题。当数组作为组件实例属性(this.arr)传递给uni.request的data时,在序列化过程中可能丢失数据内容。
问题分析:
- 直接使用局部变量
arr能正常发送,说明基础数组传输功能正常 - 使用
this.arr时数组变为空,表明问题出现在响应式数据与鸿蒙Next端序列化的兼容性上 - 这可能是鸿蒙Next新版在数据序列化时对响应式数组的处理存在差异
临时解决方案:
// 在data中对数组进行浅拷贝
uni.request({
url: 'https://www.example.com/request',
data: {
arr: [...this.arr] // 或 this.arr.slice()
},
success: (res) => {
console.log(res.data);
}
});

