最近对鸿蒙项目中的列表进行性能优化,根据官方文档的提示,我们对列表的卡片使用了@Reusable 注解,并在卡片中复写了aboutToReuse()方法来对卡片中的参数重新赋值,以便卡片复用的时候参数的值是正确的,下面是最初的写法:
父组件调用卡片的地方:
image.png
卡片
image.png
这时将列表进行滑动达到复用之后,点击卡片进行卡片详情页的时候就会崩溃,经查发现是commodityItemClickHelper为undefined导致的,去掉之后崩溃解决并且进入卡片详情之后的数据是正确的,经过查看文档及论证我们发现,aboutToReuse()中赋值的参数必须是父组件传进来的参数,commodityItemClickHelper是在卡片中自主创建的,并且父组件没传这个参数给卡片,因此卡片对commodityItemClickHelper进行赋值时就会变成undefined了,正确写法如下:
父组件调用卡片的地方不变
卡片:
image.png