HarmonyOS 鸿蒙Next 在界面内向数组内添加数据时,莫名会自动在双数位置插入一个undefined
HarmonyOS 鸿蒙Next 在界面内向数组内添加数据时,莫名会自动在双数位置插入一个undefined
在页面内声明一个数组,在界面内点击按钮向里面push一个对象,添加数据的时候打印日志只加进去一条数据,但是遍历时发现会在加入数据后自动加入了一个undefined对象。可以参见下方日志。。
//添加数组
test array add data={"id":0},len=1
test array add data={"id":2},len=3
test array add data={"id":4},len=5
test array add data={"id":6},len=7
//遍历数组
test array index=0data====>undefined
test array index=1data====>{"id":0}
test array index=2data====>undefined
test array index=3data====>{"id":2}
test array index=4data====>undefined
test array index=5data====>{"id":4}
test array index=6data====>undefined
test array index=7data====>{"id":6}
更多关于HarmonyOS 鸿蒙Next 在界面内向数组内添加数据时,莫名会自动在双数位置插入一个undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
import { TableCertConfig } from './TableCertConfig';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {[@State](/user/State) message: string = '添加数据';
[@State](/user/State) certConfigItems: TableCertConfig[] = [];
[@State](/user/State) index: number = 0;
build() {
RelativeContainer() {
Text(this.message)
.id('TestPageHelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
.onClick(() => {
let data = new TableCertConfig();
data.id = this.index++;
console.debug(`test array add data=${JSON.stringify(data)},len=${this.certConfigItems.length}`)
this.certConfigItems.push(data)
})
Text('遍历数据')
.id('TestPageHelloWorld1')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
top: { anchor: 'TestPageHelloWorld', align: VerticalAlign.Bottom },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
.onClick(() => {
for (let i = 0; i < this.certConfigItems.length; i++) {
let data = this.certConfigItems[i]
console.debug(`test array index=${i}data====>${JSON.stringify(data)}`)
}
})
}
.height('100%')
.width('100%')
}
}
数组是一个class,里面有一个length元素,每次push的时候,会维护这个length。目前通过自增这个length,但是又没有元素添加,就会有空元素,出现undifined。
如果改成:
.onClick(() => {
let data = new TableCertConfig();
data.id = this.certConfigItems.length;//this.certConfigItems.length++
console.debug(`test array add data=${JSON.stringify(data)},len=${this.certConfigItems.length}`)
this.certConfigItems.push(data)
})
更多关于HarmonyOS 鸿蒙Next 在界面内向数组内添加数据时,莫名会自动在双数位置插入一个undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,界面内向数组内添加数据时,若遇到在双数位置自动插入undefined
的问题,这通常与数据绑定或数组操作不当有关。检查以下可能的原因:
-
数据绑定错误:确保你在界面模板中正确绑定了数组数据,且绑定的逻辑没有错误地触发多次数据添加。
-
数组操作不当:在添加数据到数组时,检查是否有代码逻辑错误,如重复添加或错误地修改了数组内容。确认添加操作是在正确的生命周期钩子或事件处理函数中进行。
-
异步数据处理:如果数据是异步获取的,确保数据处理逻辑正确,且在数据完全加载后再进行数组操作。
-
框架内部问题:虽然较少见,但有可能是鸿蒙框架的某个版本中的bug。检查是否有相关的框架更新或修复。
-
内存或性能问题:在高负载情况下,内存或性能问题可能导致数据处理异常。检查应用的内存使用情况和性能表现。
针对以上可能的原因,逐一排查并修正。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html