1:可复用组件里面的回调方法最好声明为可选属性 ? , 因为有不一定所有业务都需要这个回调;同时在aboutToReuse里也给这个回调赋一下值,因为可能有人用了这个组件,但是没给传回调,复用的时候就空指针了。
示例代码:
@Reusable
@Component
export struct GoodsItem {
//点击事件是否成功的回调:加购
private onItemClick?: (position: number) => void = () => {
}
aboutToReuse(params: Record<string, ESObject>) {
this.onItemClick = params.onItemClick as () => void
}
build() {
Text('测试')
.onClick(() =>{
if (this.onItemClick) {
this.onItemClick(1)
}
})
}
}
2:解析接口返回的数据时,对字段使用空表示;业务中使用的数据和接口返回的数据之间要进行转换,不能在业务中直接使用接口返回的数据;比如goodsName,接口有时候可能会返回,有时候可能不返回,如果直接使用goodsName就可能导致崩溃
示例代码:
//接口直接返回的数据
export interface GoodsDataFromServer {
goodsName?: string //后台返回
}
//业务中使用的数据
export interface GoodsDataForBusiness {
goodsName: string
}
//数据转换
private convertData(dataSource: GoodsDataFromServer): GoodsDataForBusiness {
let dataBusiness = new GoodsDataForBusiness()
dataBusiness.goodsName = dataBusiness.goodsName ?? ''
return dataBusiness
}