在LazyForEach中删除item选项时,如果传入的index为itemGenerator的index可能会有数据异常现象
LazyForEach(
dataSource,
(item: Data, index: number) => {
ListItem({
item: item,
deleteEvent: () => {
console.debug("TestDataTag index: " + dataSource.dataArray.indexOf(item) + " in:" + index)
// 执行删除操作
this.data.deleteData(this.data.dataArray.indexOf(item));
}
})
},
(item: Data, index: number) => {
return JSON.stringify(item) + index
}
)
以下为log信息,只有第一次删除时index为正确下标
当我们多次点击子组件时,会发现删除的并不一定是我们点击的那个子组件。
原因
原因是当我们删除了某一个子组件后,位于该子组件对应的数据项之后的各数据项,其index均应减1,但实际上后续的数据项对应的子组件仍然使用的是最初分配的index,其itemGenerator中的index并没有发生变化,所以删除结果和预期不符。